我正在尝试在JSP中生成HTML标记属性。下面的类表示HTML输入元素,parameters
字段表示标记属性。
public class Input {
private Map<String, String> parameters;
public Input() {
parameters = new HashMap<>();
}
// getters and setters
}
在我的Spring MVC控制器中,我创建了一个列表,其中包含输入并将其传递给我的模型。
@RequestMapping(value = "/add", method = RequestMethod.GET)
public String add(Model model) {
List<Input> inputs = new ArrayList<>();
// Creating objects and adding them to the list.
model.addAttribute("inputs", inputs);
return "add";
}
我已经检查过并且所有对象都已正确创建。我在jsp
中以正确的方式将它们打印出来有问题<c:forEach var="input" items="${inputs}">
<div class="form-group">
<label for="${input.parameters['id']}">${input.parameters['title']</label>
<input
<c:forEach var="param" items="${input.parameters}">
<c:out value="${param.key}" />=<c:out value="${param.value}" />
</c:forEach>
/>
<form:errors path="${input.parameters['name']}" />
</div>
</c:forEach>
但是,不呈现输入属性:
<input =="="></input>
这不是我的期望。我的语法出了什么问题?
答案 0 :(得分:0)
忽略糟糕的建筑设计,你的逻辑看起来很好。只有${param}
是表示HTTP请求参数映射的保留 EL变量。例如。 ${param.foo}
打印bar
的{{1}}值。另请参阅our EL wiki page。
将http://example.com/context/page?foo=bar
重命名为其他内容并重试。使用&#34;属性&#34;和&#34;属性&#34;而不是&#34;参数&#34;和&#34; param&#34;会更有意义,代码更易读。
var="param"