从Spring Web Flow中的表单中的动态表中检索值

时间:2014-05-25 09:39:40

标签: spring-webflow

我正在开发一个网站。在其中,有一个Web流,其中有一个由用户填充的表,但我不知道该表将具有的行数,因为有一个"添加行&# 34;按钮,用户输入他/她想要的值。我怎样才能获得用户输入的值以将它们保存在数据库中?

1 个答案:

答案 0 :(得分:1)

假设您的流量计形式为YourForm,表中的每一行都由POJO表示,假设为User,请在yourForm中创建一个行列表:

    public class YourForm implements Serializable{
        private List<User> rowList = new ArrayList<User>();
        //other form fields and setters and getters for all these fields
    }

和用户类是:

    public class User{
        // row fields to be displayed/captured from user in table 
    }   

在您的视图中jsp:

    //create a javascript function as:      
    function addRow(eventID){
        document.getElementById("yourForm")._eventId.value = eventID;   
        document.getElementById("yourForm").submit(); 
    }

然后

    //When user clicks on add row, a new row with empty form fields will be displayed along with existing ones as:
    <input type="button" value="Add Row" onclick="addRow('addRow');"/>
    <c:forEach items="${yourForm.rowList}" var="user" varStatus="loop">
        //Display rows with corresponding fields
    </c:forEach>

在您的流程中:

    <view-state id="someView" view="someView">      
    <transition on="addRow">
         <evaluate expression="yourAction.addRow(flowScope.yourForm)"/>
    </transition>
    <transition on="addToDatabase" to="addToDatabase">
    </view-state>

注意:如果未指定过渡'to',则在评估后将显示相同的视图 在您的操作类中,addRow方法是:

    public void addRow(YourForm yourForm) throws Exception{
        yourForm.getRowList().add(new User());
    }                           

当用户最终希望通过单击生成事件“addToDatabase”的按钮来保留所有行时,将所有用户输入的表单列表(rowList)转换为实体并保持不变。 我希望这会有所帮助。