フォームからフォーム スニペットに Bean をバインドしようとしています。
[#ftl/]
[#import "spring.ftl" as spring /]
[#import "panda.ftl" as panda /]
[#import "discoveryProject.ftl" as discoveryProject/]
[#macro defineProjectForm newProject]
[@spring.bind "discoveryProjectDetailsBean"/]
[#if newProject?has_content && newProject =="true"]
<table class="transparentTable">
<tr>
<!--Left Part-->
<td>
<table>
<tr>
<td>
[@spring.showErrors " " "errors"/]
<span>Data Source<sup><span style="color: red; ">*</span></sup></span>
</td>
<td>
<select id="dataSourceSelect" onchange="checkSelectChanges()">
[#if discoveryProjectLookupBean.dataSources?has_content]
[#list discoveryProjectLookupBean.dataSources as dataSource]
<option id="${dataSource.id}" value="${dataSource.name}">${dataSource.name}</option>
[/#list]
[/#if]
</select>
[@spring.bind path="discoveryProjectDetailsBean.discoveryProjectBean.dataSource"/]
</td>
</tr>
</table>
これはコントローラーに送信され、スニペットはこのコントローラーに送信されます。
@RequestMapping("/navigateDiscoveryProject")
ModelAndView navigateDiscoveryProject(@RequestParam("index")String i,@RequestParam("direction")String direction,
@ModelAttribute("discoveryProjectDetailsBean")DiscoveryProjectDetailsBean discoveryProjectDetailsBean,BindingResult result,HttpSession session)throws Exception{
logger.info("method invoked");
int index=Integer.parseInt(i);
//another code
}
Beanには、discoveryProjectDetailsBean
実際には別の Bean であるプロパティが含まれています。discoveryProjectBean
この Bean のプロパティは常に null ですが、上記の dataSource プロパティの例のように、ftl で自分自身をバインドします。プロパティのすべての値discoveryProjectBean
は常に null です。