spring MVC形式:radiobutton典型用法不起作用

时间:2015-02-24 05:00:31

标签: spring-mvc

这是addVariable.jsp

<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 bean

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

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

我不这么认为使用items = $ {inputTypes}是强制性的。我可以简单地使用硬编码值作为我的布尔值

1 个答案:

答案 0 :(得分:0)

如果您没有使用列表,请使用

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

这是一篇解释类似内容的帖子:

http://www.mkyong.com/spring-mvc/spring-mvc-radiobutton-and-radiobuttons-example/