日期:2014-05-20  浏览次数:20818 次

struts2的一个小问题,问题虽小,可几天解决不了
我做的是尚学堂的OA中的定义表单,定义表单中下拉框表单会有“添加条目”,点击“条目”进入添加条目主界面,我的添加条目主界面核心代码如下:
  <table class="tableEdit" style="width:580px;" cellspacing="0" border="0" cellpadding="0">

  <c:forEach begin="0" end="20" var="i">
<tr>
<td class="tdEditLabel" >文本</td>
<td class="tdEditContent"><input type="text" name="items[${i}].label" value="${field.items[i].label }">
</td>
<td class="tdEditLabel" >值</td>
<td class="tdEditContent"><input type="text" name="items[${i}].value" value="${field.items[i].value }"></td>
</tr>
  </c:forEach>
  </table>

  把上边的表单提交到Action,调用的方法代码如下:
//添加条目
public String addItem()throws Exception{
List items = getItems();
log.debug("items size is "+items.size()+" id is "+getId());
for (Iterator iter = items.iterator(); iter.hasNext();) {
FieldItem item = (FieldItem) iter.next();
if(item!=null)
{
log.debug("items is "+item.getValue());
}
//如果没有输入任何值,则忽略不处理
if(item == null || item.getValue() == null || item.getValue().trim().equals("")){
iter.remove();
}
}

formManager.updateFieldItems(getId(), getItems());

return SUCCESS;
}
  在Action中,调用到updateFieldItems()方法,它的代码如下:


public void updateFieldItems(int fieldId, List items) {
FormField field = findFormField(fieldId);
field.setItems(items);
getHibernateTemplate().update(field);
}
  其中有个FormFile类,它的代码如下,映射文件和数据库用Ant生成:
package org.myy.model;

import java.util.List;

/**
 * 表单域
 * @author Administrator
 * @hibernate.class table="T_FormField"
 */
public class FormField {

/**
* @hibernate.id
* generator-class="native"
*/
private int id;

/**
* 表单域标签
* @hibernate.property
*/
private String fieldLabel;

/**
* 表单域的名称
* @hibernate.property
*/
private String fieldName;

/**
* 表单域的输入形式
* @hibernate.many-to-one
*/
private FieldInput fieldInput;

/**
* 表单域的类型
* @hibernate.many-to-one
*/
private FieldType fieldType;

/**
* 额外参数,条目
* 比如:如果是下拉框,都有哪些值可供选择
* @hibernate.list table="T_FieldItem"
* @hibernate.key column="fieldId"
* @hibernate.list-index column="itemIndex"
* @hibernate.composite-element class="org.myy.model.FieldItem"
*/
private List items;

/**
* 对应的表单
* @hibernate.many-to-one column="flowFormId"
*/
private FlowForm flowForm;

public FieldInput getFieldInput() {
return fieldInput;
}

public void setFieldInput(FieldInput fieldInput) {
this.fieldInput = fieldInput;
}

public String getFieldLabel() {
return fieldLabel;
}

public void setFieldLabel(String fieldLabel) {
this.fieldLabel = fieldLabel;
}

public String getFieldName() {
return fieldName;
}

public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}

public FieldType getFieldType() {
return fieldType;
}

public void setFieldType(FieldType fieldType) {
this.fieldType = fieldType;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}