次のファイルがあります。
webflow-context.xml
...
<bean id="user" class="com.bla-bla.datamodel.User" scope="prototype" />
...
ユーザー.java
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private Address address = new Address();
//setters and getters
}
addUser.jspx
...
<form:form commandName="user">
<form:hidden path="id" />
<form:input path="name"/>
<form:input path="address.street"/>
<div class="Buttons">
<div class="Button">
<button type="submit" name="_eventId_cancelUser">
<fmt:message key="button.cancel" />
</button>
<button type="submit" name="_eventId_userNext">
<fmt:message key="button.next" />
</button>
</div>
</div>
</form:form>
...
addUser.xml
<on-start>
<set name="flowScope.user" value="user" />
</on-start>
<view-state id="addUser" view="addUser">
<transition on="cancelUser" to="cancelUser"/>
<transition on="userNext" to="userNext">
<set name="user.name" value="requestParameters.name"/>
<set name="user.address.street" value="requestParameters.address.street"/>
</transition>
</view-state>
...
問題は、正しく動作するがエラーがあることです:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.webflow.execution.ActionExecutionException: Exception thrown executing [AnnotatedAction@741dbf43 targetAction = [SetAction@4cf80343 name = user.address.street, value = requestParameters.address.street], attributes = map[[empty]]] in state ' addUser ' of flow ' addUser ' -- action execution attributes were 'map[[empty]]'
org.springframework.webflow.execution.ActionExecutionException: Exception thrown executing [AnnotatedAction@741dbf43 targetAction = [SetAction@4cf80343 name = user.address.street, value = requestParameters.address.street], attributes = map[[empty]]] in state ' addUser ' of flow ' addUser ' -- action execution attributes were 'map[[empty]]'
org.springframework.binding.expression.EvaluationException: An ELException occurred getting the value for expression 'requestParameters.address.street' on context [class org.springframework.webflow.engine.impl.RequestControlContextImpl]
org.springframework.expression.spel.SpelEvaluationException: EL1007E:(pos 0): Field or property 'street' cannot be found on null
フィールド«User»がオブジェクトの場合、エラーが発生します。私の仕事は、ページに入力されたデータを取得し、それを処理する最後のステップとなる Bean ユーザー (flowScope.user) に保存することです。
それを正しく行う方法は?
<form:input path="address.street"/>
UPD:アドレス = NULLの後でも問題が見つかりました。しかし、なぜ?