SpringMVC表单不绑定已定义的模型属性
我试图在JSP页面上显示select选项。这些选项被添加到模型对象中,但它们没有被显示,我不知道为什么。我的控制器代码如下所示SpringMVC表单不绑定已定义的模型属性,spring,jsp,spring-mvc,Spring,Jsp,Spring Mvc,我试图在JSP页面上显示select选项。这些选项被添加到模型对象中,但它们没有被显示,我不知道为什么。我的控制器代码如下所示 List<String> buildServerEnvironments() { List<String> environments = new ArrayList<>(); environments.add("cert"); environments.add("qa5"); return env
List<String> buildServerEnvironments() {
List<String> environments = new ArrayList<>();
environments.add("cert");
environments.add("qa5");
return environments;
}
@RequestMapping(value = "/downloaddcrcontent", method = RequestMethod.GET)
String showEnvironmentForm(Model model) {
model.addAttribute("envObj", new Environment());
model.addAttribute("serverEnvironments", this.buildServerEnvironments());
return "environments";
}
我的JSP页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%-- Used to import resources. --%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<!DOCTYPE html>
<html>
<head>
<title>Select Environment</title>
<%@ include file="meta_head.jspf" %>
<%@ include file="bootstrap_import.jspf" %>
<!-- Custom style sheet. -->
<style>
body {
padding-top: 50px;
padding-bottom: 50px;
background-color: #EEE;
}
.form-signin {
max-width: 330px;
padding: 15px;
margin: 0 auto;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="form-signin">
<p class="lead">Environment Selection.</p>
<form:form class="form-signin form-horizontal" method="POST" action="generatedcrreport" modelAttribute="envObj" >
<spring:bind path="environment">
<div class="form-group ${status.error ? 'has-error' : ''}">
<form:label path="environment">Environment</form:label>
<c:out value="${serverEnvironments}" />
<form:select path="environment" class="form-control" tabindex="0">
<form:option value="">Select an environment</form:option>
<c:forEach var="env" items="${serverEnvironments}" varStatus="index">
<form:option value="${env}"><c:out value="${env}" /></form:option>
</c:forEach>
</form:select>
</spring:bind>
</div>
<form:button type="submit" class="btn btn-lg btn-primary btn-block">Select Environment</form:button>
</form:form>
</div>
</div>
</div>
</body>
</html>
我尝试使用
语句显示serverAttributes
,但输出按原样显示
生成的JSP文件是:
在jsp中更改代码
<form:select path="environment" class="form-control" tabindex="0">
到
在jsp中更改代码
<form:select path="environment" class="form-control" tabindex="0">
到
所以问题出在我的web.xml中。我的配置显示我正在寻址2.3 XSD。因此,EL标签被忽略 通过将web.xml更改为2.4版,这些更改起到了作用
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
. . . . .
</web-app>
. . . . .
所以问题出在我的web.xml中。我的配置显示我正在寻址2.3 XSD。因此,EL标签被忽略
通过将web.xml更改为2.4版,这些更改起到了作用
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
. . . . .
</web-app>
. . . . .
您的代码正常工作。我怀疑可能有两种方法返回相同的视图,唯一的区别是,另一种方法没有初始化列表。在您的图片上,要求使用http://localhost:8080/cmsbackend/downloaddcrcontent
而应使用http://localhost:8080/showEnvironments
我尝试了你的建议,但没有效果。变量没有呈现。代码正常工作。我怀疑可能有两个方法返回相同的视图,唯一的区别是,另一个方法没有初始化列表。在您的图片上,要求使用http://localhost:8080/cmsbackend/downloaddcrcontent
而应使用http://localhost:8080/showEnvironments
我尝试了你的建议,但没有效果。未呈现变量。我要将所选值绑定到环境对象的“environment”属性。这是否意味着我需要将其绑定到“环境”变量,因为我的模型属性是“环境”类型的对象。如果您查看一下我的JSP,我的JSP中有,但是没有显示值。我想将所选值绑定到环境对象的“environment”属性。这是否意味着我需要将其绑定到“环境”变量,因为我的模型属性是“环境”类型的对象。如果您查看一下我的JSP,我的JSP中有,但是没有显示值。
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
. . . . .
</web-app>