2015-02-24 73 views
0

这里单选典型用法是addVariable.jspSpring MVC的形式:不工作

<h3>Add Process Variable</h3> 
<br>  
<form:form action="/cpms/vrms/add" commandName="processVariable"> 
    <table> 
     <tr> 
      <td>Variable Name </td> 
      <td><form:input path="variableName" /></td> 
     </tr> 
     <tr> 
      <td>Symbol </td> 
      <td><form:input path="symbol" /></td> 
     </tr> 
     <tr> 
     <td>Description </td> 
     <td><form:textarea path="variableDescription" rows="3" cols="20" /></td>    
     </tr> 
     <tr> 
     <td>Unit</td> 
     <td><form:input path="unit" /></td> 
     </tr> 
     <tr> 
     <td>Type</td> 
     <td> 
      <form:radiobuttons path="dataType" items="${dataTypes}"/> 
     </td> 
     </tr> 
     <tr> 
     <td>Source</td> 
     <td><form:radiobuttons path="source" items="${sourceList}"/></td> 
     </tr> 
     <tr> 
     <td>Is Input?</td> 
     <td> 
      <form:radiobuttons path="input" value="true" /> 
      <form:radiobuttons path="input" value="false" /> 
     </td> 
     </tr> 
     <tr> 
     <td>Is Constant?</td> 
     <td> 
      <form:radiobuttons path="constant" value="true"/> Yes 
      <form:radiobuttons path="constant" value="false"/> No 
     </td> 
     </tr> 

     <tr> 
      <td colspan="2"> 
       <input type="submit" value="Add Variable" /> 
      </td> 
     </tr> 
    </table> 

的VariableManagementController

public class VariableManagementController { 

@Autowired 
private IVariableManagementService variableManagementService; 

private static final String ADD_FORM_PATH="cpms/vrms/addVariable"; 

@RequestMapping(value="/cpms/vrms/add/form",method=RequestMethod.GET) 
String addProcessVariable(Model model){ 
    DATA_TYPE[] dataTypes = DATA_TYPE.values(); 
    SOURCE[] sourceList = SOURCE.values(); 
    model.addAttribute("dataTypes",dataTypes); 
    model.addAttribute("sourceList",sourceList); 
    model.addAttribute("processVariable", new ProcessVariable()); 
    return ADD_FORM_PATH; 
} 

的ProcessVariable豆

public class ProcessVariable { 

private String variableId; 
private String variableName; 
private String variableDescription; 
private String symbol; 
private String unit; 
private DATA_TYPE dataType; 
private SOURCE source; 
private boolean constant; //if isConstant=true then isOutput must be false 
private boolean input; 
//getters and setters 

当我碰到目标http://localhost:9090/wcc/cpms/vrms/add/form的链接时,我得到以下异常。

org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/cpms/vrms/addVariable.jsp at line 46 

43:   <tr> 
44:    <td>Is Input?</td> 
45:    <td> 
46:     <form:radiobuttons path="input" value="true" /> 
47:     <form:radiobuttons path="input" value="false" /> 
48:    </td> 
49:   </tr> 
. 
. 
. 
root cause 
java.lang.IllegalArgumentException: Attribute 'items' is required and must be a Collection, an Array or a Map 

我不想在控制器中为我的模型在布尔值中添加一个属性。它应该像这样工作。我正在使用弹簧mvc 3.1.2

我不这么认为使用items = $ {inputTypes}是强制性的。如果你没有使用列表使用

<form:radiobutton /> 
eg. 
<form:radiobutton path="sex" value="M"/>Male 
<form:radiobutton path="sex" value="F"/>Female 

这里是一个后地名释义类似的事情,我可以简单地使用硬编码值,我的布尔值

回答