【问题标题】:bind enum to radio button in jsp将枚举绑定到jsp中的单选按钮
【发布时间】:2014-07-23 10:09:47
【问题描述】:

我找到了一些与此相关的示例和帖子,但找不到完整的解决方案或示例。
我想使用枚举来保存单选按钮的值。
请帮忙。

我有一个像下面这样的枚举:

public enum MyEnum implements Serializable {
SUNDAY, MONDAY, TUESDAY
}

我的 jsp 中有一个表单,如下所示:

MyJSP.jsp

<form:form action="" method="post">
    <input type="radio" id="id1" name="name1" value="value1" >
    <input type="radio" id="id2" name="name2" value="value2" >
    <input type="radio" id="id3" name="name3" value="value3" >               
</form:form>

我有一个模型类如下:
MyModel.java

public class MyModel {
    private String temp;
    private MyEnum myEnum;
    //getters and setters here
}

我有一个控制器如下:
MyController.java

@Controller
@SessionAttributes(MyModel)
public class MyController {

  @ModelAttribute(MyModel)
  public MyModel initMyModel(final HttpServletRequest httpRequest, final HttpSession session) {
    MyModel myModel = new MyModel(.....);
    //code goes here

    return myModel;
  }

  @RequestMapping(value = , method = RequestMethod.GET)
  public String initialViewMyModel(final HttpServletRequest httpRequest, final HttpSession session) {
    return MyJsp;
  }

  @SuppressWarnings("boxing")
  @RequestMapping(value = , method = RequestMethod.POST)
  public String onSubmit(final @ModelAttribute(MyModel) MyModel myModel, final BindingResult bindingResult, final HttpServletRequest httpRequest, final ModelMap modelMap) {
    HttpSession session = httpRequest.getSession();
    //Here is the issue
    MyEnum[] myEnum= myModel.getmyEnum();   //I want here to get the index or anything so that I could identify the selected radio button and use the switch case further but getting null here
    switch (//----) {
        case SUNDAY :
            break;

        case MONDAY :
            break;

        case TUESDAY :
            break;
    }

    return "someotherJSP";
  }

如何将 MyJsp.jsp 中的单选按钮绑定到枚举值,以便根据所选单选按钮获取枚举值?
简单的单选按钮或 spring:radio 标签都可以为我工作。
请帮忙!

【问题讨论】:

    标签: jsp spring-mvc enums radio-button spring-tld


    【解决方案1】:

    代表单个操作的单选按钮必须具有相同的name。从以下开始:

    <form:form action="" method="post">
      <input type="radio" name="day" value="SUNDAY" >
      <input type="radio" name="day" value="MONDAY" >
      <input type="radio" name="day" value="TUESDAY" >               
    </form:form>
    

    然后,简单地收集控制器中的单选按钮值:

    @RequestMapping
    public String onSubmit(@RequestParam MyEnum day)
    {
      ...
    }
    

    如果用户选择了单选按钮值之一,您将能够在映射控制器方法中读取该值。还可以在模型对象内的某个字段中收集选中的值,例如:

    @RequestMapping
    public String onSubmit(FormModel model)
    {
      ...
    }
    

    其中FormModel 是一个Java 类,其中包含一个名为day 的字段。

    【讨论】:

    • 参考我上面的代码,您能否建议在根据您的答案更改 jsp 后如何在控制器中检索选定的单选值。我的意思是在这种情况下如何检索选定单选按钮的值。
    • 用于检索所选单选按钮值的代码 sn-ps 在我上面的答案中(参见@RequestParamFormModel)。将其作为一个小样本进行尝试,您将能够使其发挥作用。
    • 我的意思是在 onSubmit 方法中,如何从 FormModel 中检索选定的单选值,其中 FormModel 类似于:public class FormModel { Day day;字符串温度; } 其中 Day 是枚举
    • model.day,或model.getDay(),取决于你如何编码FormModel
    • 您可以查看我在Google App Engine 上运行的示例应用程序及其在Github 上的源代码。
    猜你喜欢
    • 2011-01-29
    • 2014-10-14
    • 1970-01-01
    • 2012-05-18
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    相关资源
    最近更新 更多