【问题标题】:Spring MVC Form Select OptionsSpring MVC 表单选择选项
【发布时间】:2015-10-27 03:11:21
【问题描述】:

简单的 Spring MVC 应用程序。我想填充一个表单:在我的 JSP 中选择一个在我的控制器中填充的地图。

在我的 JSP 中,form:select 没有任何选项。如果我从 chrome 检查 HTML 元素,则不会出现任何选项。在我的项目的其他地方,同样的方法也有效,但在这种情况下,它是一个枚举。

简要代码sn-ps如下:

//        Domain Class          
public class Expense {
      String attributeSelectedFromJSP;
      Map<String,String> attributesToBeShownInJSP;
      ...
}

地图在构造函数中初始化。

在控制器中

Expense exp = new Expense();
    // List allEcs is a list of String
    for (ExpenseCategory e : allEcs)    {
        exp.attributesToBeShownInJSP.put(e.toString(), e.toString());
    }
    modelMap.addAttribute(
            "expense", exp);
    return new ModelAndView("addExp.jsp",
            "command", exp);

在我的 JSP 中

<form:form method="POST" action="/addNewExpense"
                modelAttribute="expense">
                <div class="form-group">
                    <table >
                    <tr>                    
                        <td>
                            <form:label path="attributeSelectedFromJSP">Select something: </form:label>
                        </td>
                        <td colspan="2">                    
                            <form:select path="attributeSelectedFromJSP" class="form-control">          
                                 <form:options items="${attributesToBeShownInJSP}" />
                            </form:select>
                        </td>
                    </tr>

对于同一类,其他字符串属性显示正确。问题仅与选择选项有关。相同的 sn-p 代码在我使用 ENUM 的另一个屏幕中可以正常工作。

【问题讨论】:

  • 我认为您需要为attributesToBeShownInJSP 创建一个新映射。然后你应该把它添加到你的模型中,并从 items 属性中调用。

标签: spring jsp model-view-controller


【解决方案1】:

你能试试这个吗?这可能有效。

<c:set var="entry" value="${expense.attributesToBeShownInJSP}"></c:set>

设置映射,然后用映射对象填充选项标签。

<form:select path="attributeSelectedFromJSP" class="form-control">          
    <form:options items="${entry}" />
</form:select>

【讨论】:

    【解决方案2】:
    Why u declare map (Map<String,String> attributesToBeShownInJSP)  in Bean Expense :
    
    Do this 
    1.
    In controller, add  : 
    
     @ModelAttribute("myMap")
        public Map<String,String> refData() { 
            Map<String,String> map ...;
    
            return map;
    
        }
    
    2.
    in jsp
    
    <form:form method="POST" action="/addNewExpense"
                    modelAttribute="expense">
    
    <form:select path="attributeSelectedFromJSP" class="form-control">          
             <form:options items="${myMap}" />
    </form:select>
    
    </form:form>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-09
      • 1970-01-01
      • 2023-04-05
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多