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