0

我有一组从列表中的数据库填充的数据。

List<ManageJob> contentList = jdbcTemplate.query(jobListQuery, new RowMapper() { 
public ManageJob mapRow(ResultSet rs, int rowNum) throws SQLException { 
ManageJob job = new ManageJob(); 
job.setContentId(rs.getString(1)); 
job.setContentName(rs.getString(2)); 
job.setContentPath(rs.getString(3)); 
return job; 
} 
});

form.setContentList(contentList); 

我将它们显示在 jsp 的不同文本框中。

<c:forEach items="${ManageJobForm.ContentList}" var="ContentList" >
<label for="${ContentList.contentId}">${ContentList.contentName}</label>
<input type="text" class="textboxStyle" name="${ContentList.contentId}"       value="${ContentList.contentPath}" /> 
</br></br> 

我确实修改了内容路径并保存它们。现在它们应该带有form bean。但是表单bean列表正在抛出空指针。

FormBean (ManageJobForm) 就像,

private List<ManageJob> ContentList; // with setter getter

请建议我如何在spring mvc 3 中将这些文件值转换为 formbean。


数据 1st 填充在 DAO 层中的数据库列表中。DAO 被注入到 Service 层,最后 service 被注入到控制器中。请通过填充 List 的 DAO、Service 和 Controller。

JobDAOImpl.java,

    public List<Content> getJobContentList(String source, String storeType, String  contentType, int langId){

    List<Content> contentList;

    String contentListSql = "SELECT CON.CONTENT_ID, CON.CONTENT_NAME, CON.CONTENT_PATH FROM CONTENT CON " +
        "WHERE CON.STORE = ? AND CON.LANG_ID = ? AND CON.INSTANCE_TYPE = ? AND CON.CONTENT_TYPE = ?";

    contentList = jdbcTemplate.query(contentListSql, 
             new Object[] { storeType, langId, source, contentType}, 
          new RowMapper(){ 

            public Content mapRow(ResultSet rs, int rowNum) throws SQLException { 
                Content job = new Content(); 
                job.setContentId(rs.getString(1)); 
                job.setContentName(rs.getString(2)); 
                job.setContentPath(rs.getString(3)); 
                return job; 
            } 
          });


    return contentList;
}

JobServiceImpl.java,

    @Autowired
    public JobDAO dao; 

    public List<Content> getJobContents(String jobName, String source, String contentType){

    String[] strArray = jobName.split(" ");
    String storeType = strArray[0];

    int langId = 0;

    List<Content> dataList;

    if(storeType != null && storeType.equalsIgnoreCase("US")){
        langId = -1;

        dataList = dao.getJobContentList(source, storeType, contentType, langId);

    }else if (storeType != null && storeType.equalsIgnoreCase("CA")){
        langId = 1;

        dataList = dao.getJobContentList(source, storeType, contentType, langId);

    }

    return dataList;
}

ManageJobsController.java,

    @Autowired
public JobService jobService;

    List<List> creativeContentList = jobService.getJobContents(bean.getJobName(), instance, "Creative");

    bean.setCreativeContentList(creativeContentList.get(0));


    model.addAttribute("jobName", bean.getJobName());

现在我的 CreativeContentList 已准备好数据,我可以在 jsp 页面中对其进行迭代以获取值。所以在 ConfigContent.jsp 中,

<form:form method="POST" action="ConfigureJobController.do" commandName="ManageJobForm" >
<div class="subTopic hide" id="tab2">
    <c:forEach items="${ManageJobForm.creativeContentList}" var="creativeContentList" >

        <label for="${creativeContentList.contentId}">${creativeContentList.contentName}</label>

        <input type="text" class="textboxStyle" name="${creativeContentList.contentId}"                                 value="${creativeContentList.contentPath}" /> 

        </br></br> 
    </c:forEach>        
</div>
<input type="Submit" class="buttonStyle" name="saveBtn" value="Save" />

现在我对内容路径进行了一些修改并尝试保存它。但是当我从控制器访问formbean的creativeContentList时,列表是空的。检查 JobConfigController.java,

@Controller
@RequestMapping(value="/ConfigureJobController.do")
public class JobConfigController {

@RequestMapping(params="saveBtn", method=RequestMethod.POST)
public String saveConfiguration(ModelMap model, @ModelAttribute(value="ManageJobForm") ManageJobForm                            bean, BindingResult result){

    List<Content> creativeSiteContent = bean. getCreativeContentList ();

    //Getting null list here
    if(null != creativeSiteContent && creativeSiteContent.size() > 0){
        for (Content cont : creativeSiteContent) {  

            System.out.println("Hiiiiiiiiiiiiiiiiii in config controller " + cont.getContentId());
        }
    }

    return "ConfigContent";

}

如何使用新的输入值在 formbean 中填充 CreativeContentList,以便我可以再次将它们保存在 db.xml 中。有没有其他方法来处理这种情况?

请帮我。

4

0 回答 0