我正在开发一个网站。在其中,有一个Web流,其中有一个由用户填充的表,但我不知道该表将具有的行数,因为有一个"添加行&# 34;按钮,用户输入他/她想要的值。我怎样才能获得用户输入的值以将它们保存在数据库中?
答案 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)转换为实体并保持不变。 我希望这会有所帮助。