2014-10-05 45 views
1

我有Struts 2应用程序。Struts 2字段使用动态表单验证

我有一个jsp文件,它看起来像下面

<s:form method="post" action="%{#attr.actionType}"> 

    <c:forEach items="${nvpList2}" var="item"> 
     <s:textfield label="%{#attr.item.displayName}" 
        value="%{#attr.item.value}" 
         name="%{#attr.item.getName()}" 
         id="%{#attr.item.getName()}"/> 
    </c:forEach> 

    <s:submit type="button" cssClass="btn btn-primary" 
       key="button.save" theme="simple" > 
     <i class="icon-ok icon-white"></i> 
    </s:submit> 

</s:form> 

因为它可以看出,所有的动作名称开始字段名的要素是动态创建的,当我做一个验证发生

问题检查字段。 验证检查时,显示错误,但没有任何文本字段出现在页面中。

我该如何解决这个问题。

+0

当您返回输入结果时会显示错误,因此在结果侦听器重新填充列表之前。 – 2014-10-05 21:41:29

回答

2

阅读what happens when a validation or conversion error occours的详细工作流程;一旦你得到正在发生的事情,请阅读​​(prepare()方法和其他方法);然后,不管静态(JSP或HTML)还是动态(JSP or Javascript),都需要查看您需要构建到send Lists or Maps from JSP to Action的哪种表示法(以及复杂情况下的结构);而不管是静态的(JSP还是HTML)还是动态的(JSP or Javascript)。最后,我不确定你为什么使用JSTL而不是a Struts Iterator,也不知道你发送数据的数据结构,但要注意需要在名称中加上索引(用IteratorStatus.index)。