一个视图中有多个表单。 Spring web flow + displaytag +复选框

时间:2012-07-27 12:36:33

标签: spring-webflow displaytag

我的应用程序中有一个使用display标签的表,即使用spring web flow。我想在每一行都有一个复选框,一个允许我选择/使用全部按钮和一个按钮来执行一个功能。单击按钮后,操作将执行一些数据库操作,页面应该呈现,因此我们可以看到这些更改。

我不知道哪个是最好的选择,提交整个表格

<form method="POST" (more params)>
    <display:table id="row">
          ....
   </display:table>
</form>

或仅限复选框列。在这种情况下,我不知道如何实现它。

我尝试了两种不同的方法: 1.使用简单的输入文本,复选框类型。这是不可能的,因为当我提交表单时,我需要设置另一个page.jsp的路径(我正在使用流程)。此外,我不知道如何将这些值发送到java后端。

  1. 使用弹簧标签。 在这种情况下,问题来自班级conversationAction                     
  2. 我找到了一些examples,但总是使用MVC和控制器案例。

    我怎样才能实现这个问题?

    修改 我找到了一种解决方案,但我遇到了一个新问题...

    flow.xml

     var name="model1" class="com.project.Model1"/>
     var name="model2" class="com.project.Model2"/>
    
    view-state id="overview" model="formAggregation">
    ...
    </view-state>
    

    page.jsp

     form:form modelAttribute="formAggregation.model1" id="overviewForm">
    ...
    /form:form>
    ...
     form:form method="POST" modelAttribute="formAggregation.model2">
        display:table id="row" name="displayTagValueList" requestURI="overview?_eventId=tableAction">
    
    display:column title="">
                form:checkbox path="conversationIds" value="${row.threadId}"/>
            /display:column>
    
    /display:table>
            input type="submit" name="_eventId_oneFunction" value="Send>>"/>
        /form:form>
    

    FormAggregation.java

    @Component("formAggregation")
    public class FormAggregation {
       private Model1 model1;
       private Model2 model2;
    //Getters and setters
    

    我需要这个聚合器,因为我需要两个模型。我已经逐一测试了它,它正在按照自己的意愿工作。任何想法??

    谢谢!

1 个答案:

答案 0 :(得分:0)

我找不到在视图状态下添加两个模型的解决方案。所以我做了一个解决方法,将我需要的字段添加到我正在使用的模型com.project.Model1。结果是:

<强> page.jsp

<form:form method="POST" id="tableForm" modelAttribute="model1">
     <display:table id="row">
           <display:column title="">
            <form:checkbox path="chosenIds" value="${row.id}"/>
          </display:column>
          <display:footer>
            <div class="tableFooter" >
                <input type="submit" name="_eventId_workIds" value="Send"/>
            </div>
        </display:footer>
      </display:table>
  </form:form>

<强> flow.xml

<var name="model1" class="com.project.Model1"/>
...
<transition on="workIds" to="overview" validate="false">
            <evaluate expression="actionBean.workIds(model1.chosenIds)" />
        </transition>

java class

public void workIds(List<Long> ids) {

希望有所帮助