You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Rodrigo Lins <li...@gmail.com> on 2009/05/12 22:22:13 UTC

Help with validation

Hi,
I'm in trouble, i use a ValidationForm and the validation plugin to validate
my formBean.
Every time i push the button to submit my action and don't validate i see
twice error messages.
Can you help me?


Thanks,
Rodrigo.

validation.xml
<form name="networkAdminForm">
<field depends="required,mask,minlength" property="nodeName" page="4">
                <arg
key="label.wdtlight.networkAdmin.hardwareChangeNotification.validation.nodeName"

                position="0" />
                <arg key="${var:minlength}" name="minlength" position="1"
resource="false" />
                <var>
                    <var-name>mask</var-name>
                    <var-value>${dslam}</var-value>
                </var>
                <var>
                    <var-name>minlength</var-name>
                    <var-value>5</var-value>
                </var>
            </field>

            <field depends="mask" property="portKey" page="4">
                <arg
key="label.wdtlight.networkAdmin.hardwareChangeNotification.validation.resourcePosition"

                position="0" />
                <var>
                    <var-name>mask</var-name>
                    <var-value>${port}</var-value>
                </var>
            </field>
</form>

Part of my Action

    public ActionForward searchHardwareChangeNotification(ActionMapping
mapping, ActionForm form, HttpServletRequest request, HttpServletResponse
response)
    {
        request.getSession().removeAttribute(IConstants.SESSION_LIST);

        initLists(request);

        NetworkAdminForm networkAdminForm = (NetworkAdminForm) form;

        //    Seta a página correta no formulário para validação.

networkAdminForm.setPage(NetworkAdminForm.HARDWARE_CHANGE_NOTIFICATION_PAGE);

        //    Valida os dados de entrada do formulário. (configurações de
validação no arquivo validation.xml)
        ActionMessages errors = networkAdminForm.validate(mapping, request);

        if (!errors.isEmpty()) {
            saveErrors(request, errors);
            return showHardwareChangeNotificationPage(mapping, form,
request, response);
        }
}


My JSP File

<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html-el.tld" prefix="html-el" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic-el.tld" prefix="logic-el" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean-el.tld" prefix="bean-el" %>
<%@ taglib uri="/WEB-INF/tlds/displaytag.tld" prefix="display" %>

<%@ page import="br.com.targets.wdt.ui.struts.action.NetworkAdminAction" %>
<%@ page import="br.com.targets.wdt.ui.struts.action.IConstants" %>
<%@ page import="br.com.targets.wdt.business.valueobjects.ResourceObject" %>

<link type="text/css" rel="stylesheet"
href="<%=request.getContextPath()%>/include/css/wdtlight-tableReport.css">


<script language="javascript">

    if (navigator.appName.indexOf('Microsoft') != -1){
         clientNavigator = "IE";
     }else{
         clientNavigator = "Other";
     }

    function blockChararacters(evnt){
        if (clientNavigator == "IE"){
             if (evnt.keyCode < 48 || evnt.keyCode > 57){
                 return false
             }
         }else{
             if ((evnt.charCode < 48 || evnt.charCode > 57) && evnt.keyCode
== 0){
                 return false
             }
         }
    }

    function formatPosition(input, evnt){

        if (input.value.length == 2 || input.value.length == 5 ||
input.value.length == 8){
            if(clientNavigator == "IE"){
                 input.value += "-";
             }else{
                 if(evnt.keyCode == 0){
                     input.value += "-";
                 }
             }
        }
        return blockChararacters(evnt);
    }

    // Função usada para submeter o form com uma acao especifica
    function doNetworkAction(pForm,pAcao,pId){
        pForm.elements['method'].value=pAcao;
        pForm.elements['selectedNodeIp'].value=pId;
        pForm.submit();
    }

    function doNetworkActionStatus(pForm,pAcao,pId,pType){
        pForm.elements['method'].value=pAcao;
        pForm.elements['selectedId'].value=pId;
        pForm.elements['selectedResourceType'].value=pType;
        pForm.submit();
    }
</script>



<html:form action="/NetworkAdmin" >

<html:hidden name="networkAdminForm" property="method" />


<html:hidden name="networkAdminForm" property="selectedNodeName" />
<html:hidden name="networkAdminForm" property="selectedResourceType" />
<html:hidden name="networkAdminForm" property="selectedNodeIp" />
<html:hidden name="networkAdminForm" property="selectedId" />


<TABLE width="100%">
    <TBODY>
        <TR>
            <TD class="subsubtitle" colspan="3" >
                <IMG height=7 src="./include/images/body/barrow.jpg"
width=10 border=0 />
                <B><FONT color=#003366><bean:message
key="label.wdtlight.networkAdmin.hardwareChangeNotification.form.title"/></FONT></B>
            </TD>
        </TR>
        <TR>
            <TD colspan="3">
                <HR>
            </TD>
        </TR>
        <tr>
            <TD width="50">
            </TD>
            <td>
                <table width="100%"  border='0'>

                    <!-- Nome do nó -->
                    <tr>
                        <td width="150" align="left">
                            <bean:message
key="label.wdtlight.networkAdmin.changeStatus.nodeName"/>
                        </td>
                        <td>
                            <html:text name="networkAdminForm"
property="nodeName" maxlength="64" size="35" ></html:text>
                        </td>
                    </tr>


                    <!-- Posicao do Recurso -->
                    <tr>
                        <td width="150" align="left">
                            <bean:message
key="label.wdtlight.networkAdmin.hardwareChangeNotification.resourcePosition"/>
                        </td>
                        <td>
                            <html:text name="networkAdminForm"
property="portKey" maxlength="11" size="35" onkeypress="return
formatPosition(this, event);"></html:text>
                        </td>
                    </tr>
                    <tr>

                        <!-- Status do Recurso -->
                        <td width="150" align="left">
                            <bean:message
key="label.wdtlight.networkAdmin.hardwareChangeNotification.resourceStatus"/>
                        </td>
                        <td>
                            <html:select name="networkAdminForm"
property="selectedResourceStatus" style="width:231px;">
                                <html:option value=""><bean:message
key="label.wdtlight.combo.noSelection"/></html:option>
                                <logic-el:iterate id="item" name='<%=
NetworkAdminAction.RESOURCE_STATUS_LIST %>' indexId="index">
                                    <html-el:option
value="${item.key}"><bean-el:message key="${item.key}" /></html-el:option>
                                </logic-el:iterate>
                            </html:select>
                        </td>
                    </tr>
                    <tr>
                        <TD align="right" colspan="2">
                            <table width="100%">

                                <tr>
                                    <td class="formButton" align='right'>
                                        <div align='right'>
                                            <INPUT class='button'
type='button'
onclick="JavaScript:showWaitMessage();doNetworkAction(networkAdminForm,'<%=
NetworkAdminAction.ACTION_SEARCH_FROM_HARDWARE_CHANGE %>')"
value='<bean:message
key="label.wdtlight.networkAdmin.hardwareChangeNotification.search.button"/>'>

                                        </div>
                                    </td>
                                </tr>
                            </table>
                        </TD>
                    </tr>


                </table>
            </td>
        </TR>
    </TBODY>
</table>
<logic:present name='<%= IConstants.SESSION_LIST %>'>

    <table width="100%" border='0'>
    <tr>
        <td colspan="3" height="10">
            <hr>
        </td>
    </tr>
    </table>

    <%-- Caso o retorno tenha sido em branco --%>
    <logic:empty name='<%= IConstants.SESSION_LIST %>'>
    <table width="100%" border='0'>
        <tr valign="top" >
            <td colspan="3"  align="center" style="padding-top: 15px;
padding-bottom: 20px;">
                <font style="color: red; "><bean:message
key="label.wdtlight.noResults"/></font>
            </td>
        </tr>
    </table>
    </logic:empty>

    <%-- Caso o retorno venha populado --%>
    <logic:notEmpty name='<%= IConstants.SESSION_LIST %>'>
        <table width="100%" border='0'>
                <tr align="center" valign="middle">
                    <td colspan="3">
                        <display:table class="report" id="resourceObject"
name='<%= IConstants.SESSION_LIST %>'
                        export="true" defaultsort="1"
defaultorder="descending" pagesize='<%= IConstants.DEFAULT_PAGE_SIZE %>'
                        requestURI='<%=
"/NetworkAdmin.do?method="+NetworkAdminAction.ACTION_SEARCH_FROM_HARDWARE_CHANGE
%>' excludedParams="method" >

                            <%-- Dslam Name Column --%>
                            <display:column
titleKey="label.wdtlight.networkAdmin.hardwareChangeNotification.dslamName"
property="nodeName" sortable="true" headerClass="sortable"/>

                            <%-- Resource Position Column --%>
                            <display:column
titleKey="label.wdtlight.networkAdmin.hardwareChangeNotification.resourcePosition"
property="key" sortable="true" headerClass="sortable"/>

                            <%-- Manufacturer Name Column --%>
                            <display:column
titleKey="label.wdtlight.networkAdmin.hardwareChangeNotification.manufacturerName"
property="manufacturer" sortable="true" headerClass="sortable"/>

                            <%-- Node Resource Type Column --%>
                            <display:column
titleKey="label.wdtlight.networkAdmin.hardwareChangeNotification.resourceType"
sortable="true" headerClass="sortable">
                                <bean-el:message
key="${resourceObject.resourceType.key}"/>
                            </display:column>

                            <%-- Node Status Column --%>
                            <display:column
titleKey="label.wdtlight.networkAdmin.hardwareChangeNotification.nodeStatus"
sortable="true" headerClass="sortable">
                                <bean-el:message
key="${resourceObject.resourceStatus.key}"/>
                            </display:column>

                            <%-- Timestamp Column --%>
                            <display:column
titleKey="label.wdtlight.networkAdmin.hardwareChangeNotification.timestamp"
property="timestamp" sortable="true" headerClass="sortable"
decorator="br.com.targets.wdt.ui.displaytag.decorators.LongDateWrapper" />

                            <%-- Node Select Column --%>
                            <display:column
titleKey="label.wdtlight.networkAdmin.hardwareChangeNotification.select">
                                <input class='button' type='button'
onclick="javascript:doNetworkActionStatus(networkAdminForm,'<%=NetworkAdminAction.ACTION_SHOW_CHANGE_OR_UPDATE_STATUS_PAGE%>','<%=((ResourceObject)resourceObject).getId()%>','<%=((ResourceObject)resourceObject).getResourceType().getKey()%>')"
value='<bean:message
key="label.wdtlight.networkAdmin.hardwareChangeNotification.update.button"/>'
/>
                            </display:column>

                            <display:setProperty name="export.pdf"
value="true" />

                        </display:table>
                    </td>
                </tr>
        </table>
    </logic:notEmpty>

</logic:present>

</html:form>

-- 
Rodrigo Lins de Oliveira
21 8610-8297