JSPページで選択オプションを表示しようとしています。オプションはモデルオブジェクトに追加されますが、表示されません。その理由を特定できません。私のコントローラのコードは、私のモデルBeanが以下の通りですSpring MVCフォームが定義済みのモデル属性をバインドしない
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";
}
以下の通りである:
public class Environment {
private String environment;
public String getEnvironment() {
return environment;
}
public void setEnvironment(String environment) {
this.environment = environment;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return new StringBuilder(this.getClass().getSimpleName()).
append("(environment = ").append(this.environment).append(")").
toString();
}
}
私の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>
私は、レンダリングされたJSPが、私はSpringのモデルオブジェクトに追加さserverEnvironments
属性を認識していないことが判明します。私は、私ものModelAndViewにオブジェクトを渡しますが、無駄にしようとした以下の記事
Spring MVC model attribute value not displaying
- 通過しました。 ModelAndViewを処理するための私のコードは以下のとおりであると
https://www.javacodegeeks.com/2013/07/spring-mvc-form-handling-vol-5-select-option-options-tags.html
@RequestMapping(value = "/showEnvironments", method = RequestMethod.GET) ModelAndView showEnvironmentForm() { ModelAndView view = new ModelAndView("environments"); view.addObject("envObj", new Environment()); view.addObject("serverEnvironments", this.buildServerEnvironments()); return view; }
この記事に基づいており、私は
<c:out value="${serverAttributes}" />
ステートメントを使用してserverAttributes
を表示しようとしたが、そのまま出力が表示されます。生成されたJSPファイルは次のとおりです。
おそらく2つのメソッドが同じビューを返すと思われますが、唯一の違いはリストが初期化されないということです。あなたの写真では、フォームは 'http:// localhost:8080/cmsbackend/downloaddcrcontent'でリクエストされますが、' http:// localhost:8080/showEnvironments'でリクエストされるべきです –
私はあなたの提案を試みました。変数はレンダリングされません。 – Kartik