Problema Validação Struts 2 Annotations

Olá

acabei q não utilizei a versão mais nova pq mudou muita coisa, inclusive o plugin com o spring… e não tem tempo habil para migar a aplicação inteira… acabei usando a versão 2.0.11 mesmo sem annotation nos action… usando o struts.xml mesmo… ai funcionou certinho…

mas estou com outro problema relacionado a validação… com annotations d novo… :frowning:

olhe meu codigo



@Validation
public class SsiAction extends GenericStrutsAction {

	 .................
	
	private List<Employee> employees;

	private List<RqType> rqTypes;

	private List<Application> applications;

	private List<Status> status;
	
	private List<Ssi> ssis;
	
	private List<DocumentGroup> groups;
	
	...............

	public String execute(){
		populateSsiForm();
		return GenericStrutsAction.SUCCESS;
	}
	
	public String list(){
		ssis = ssiRepository.findAll();
		Collections.sort(ssis,Ssi.CODE_COMPARATOR);
		return GenericStrutsAction.LIST;
	}
	
	.....................

	public String edit(){
		ssi = ssiRepository.save(getSsi());	
		
		ProgressReport progressReport = progressReportRepository.findBySsi(ssi);
		if (progressReport == null) {
			progressReport = new ProgressReport();
			progressReport.setDate(ssi.getCreation());
			progressReport.setSsi(ssi);
			progressReportRepository.save(progressReport);
		}	
		return SsiAction.SHOW_SSI;
	}

	....................
	
	........... << GETS >> ...........
	

	@SkipValidation
	public void setGroups(List<DocumentGroup> groups) {
		this.groups = groups;
	}

	@SkipValidation
	public void setApplicationRepository(
			ApplicationRepository applicationRepository) {
		this.applicationRepository = applicationRepository;
	}

	@SkipValidation
	public void setEmployeeRepository(EmployeeRepository employeeRepository) {
		this.employeeRepository = employeeRepository;
	}
	
	@SkipValidation
	public void setProgressReportRepository(
			ProgressReportRepository progressReportRepository) {
		this.progressReportRepository = progressReportRepository;
	}

	@SkipValidation
	public void setRqTypeRepository(RqTypeRepository rqTypeRepository) {
		this.rqTypeRepository = rqTypeRepository;
	}

	@SkipValidation
	public void setSsiRepository(SsiRepository ssiRepository) {
		this.ssiRepository = ssiRepository;
	}

	@SkipValidation
	public void setStatusRepository(StatusRepository statusRepository) {
		this.statusRepository = statusRepository;
	}
	
	@SkipValidation
	public void setDocumentGroupService(
			DocumentGroupService documentGroupService) {
		this.documentGroupService = documentGroupService;
	}

	@SkipValidation
	public void setSsiService(SsiService ssiService) {
		this.ssiService = ssiService;
	}

	@RequiredStringValidator(message = "Please enter a name")
	public void setTeste(String teste) {
		this.teste = teste;
	}
}

estou qrendo validar apenas o campo teste… olhe a jsp agora

<%@ page contentType="text/html; charset=iso-8859-1" pageEncoding="LATIN1" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<html>

<head>
	..............
	
</head>

<body>

<jsp:include page="/includes/header.jsp" />

<s:form action="ssi!edit.action" id="fromEdit" validate="true"> 
	<table width="99%" border="1" class="tablemain" cellpadding="0"
		cellspacing="0" align="center">
		<tr>
			<td height="30" colspan="8" class="tdTitle">Ordem de Serviço</td>
		</tr>
		<tr>
			<td>
			<table width="100%" border="0" cellpadding="3" cellspacing="1" align="center">
				<tr>
					<td colspan="8">
						<s:actionerror />
         				<s:fielderror />
					</td>
				<tr>
				<tr>
					<td width="9%" height="40">Número da OS:</td>
					<td width="20%"><s:textfield id="ssi.code" name="ssi.code" value="%{ssi.code}" theme="simple"/></td>
					<td width="10%">Nome do Projeto:</td>
					<td width="35%" colspan="3"><s:textarea id="ssi.title" name="ssi.title" value="%{ssi.title}"  theme="simple" cols="34" rows="2"/></td>
					<td width="10%">Data de Abertura:</td>
					<td>
						<input type="text" 
							name="ssi.creation" 
							size="9" 
							value="<s:date name='ssi.creation' format='dd/MM/yyyy'/>" 
							id="ssi.creation">
						<a href="#"><img src="<s:url value='/images/iconecalendario.gif' />" border="0" id="button.creation" /></a>
					</td>
				</tr>
				<tr>
					<td>Descrição:</td>
					<td width="40%" colspan="5">
						<s:textarea value="%{ssi.comment}" id="ssi.comment" name="ssi.comment" theme="simple" cols="64" rows="2" />
						<br>
						
						
						teste: <s:textfield value="%{teste}" id="teste" name="teste" theme="simple"/>
						
						
						
						
						<br>
						
					</td>
					<td>Data de Início:</td>
					<td>
						<input type="text" 
							name="ssi.start" 
							size="9" 
							value="<s:date name='ssi.start' format='dd/MM/yyyy'/>" 
							id="ssi.start">
						<a href="#"><img src="<s:url value='/images/iconecalendario.gif' />" border="0" id="button.start" /></a>
					</td>
				</tr>
				<tr>
					<td>Sigla:</td>
					<td>
					<s:select 
						name="ssi.application.id"
						theme="simple"
						list="applications"
						listKey="id"
						listValue="description"
						id="ssi.application.id"
						value="%{ssi.application.id}" 					
						/>
					</td>
					<td>Responsável Consórcio:</td>
					<td colspan="5">
					<s:select 
						theme="simple"
						list="employees" 
						listKey="id"
						listValue="name"
						id="ssi.analystResp.id"
						name="ssi.analystResp.id"
						value="%{ssi.analystResp.id}"/>
					</td>
				</tr>
				<tr>
					<td>Esforço Estimado:</td>
					<td><s:textfield size="5" id="ssi.estimatedEffort" name="ssi.estimatedEffort" value="%{ssi.estimatedEffort}" theme="simple"/> </td>
					<td>Responsável SI:</td>
					<td colspan="3"><s:textfield id="ssi.customerResp" name="ssi.customerResp" value="%{ssi.customerResp}" theme="simple" size="41" /></td>
					<td>Data Prevista de Término:</td>
					<td>
						<input type="text" 
							name="ssi.finish" 
							size="9" 
							value="<s:date name='ssi.finish' format='dd/MM/yyyy'/>" 
							id="ssi.finish">
						<a href="#"><img src="<s:url value='/images/iconecalendario.gif' />" border="0" id="button.finish" /></a>
					</td>
				</tr>
				<tr>
					<td>Unidade de Medida:</td>
					<td>
						<s:select 
							theme="simple"
							list="rqTypes" 
							name="ssi.rqType1.id" 
							listKey="id"
							listValue="description"
							id="ssi.rqType1.id"
							value="%{ssi.rqType1.id}"
							/>
					</td>
					<td>Situação Atual:</td>
					<td colspan="3">
						<s:select 
							theme="simple"
							list="status" 
							name="ssi.status.id" 
							listKey="id"
							listValue="description"
							id="ssi.status.id"
							value="%{ssi.status.id}"
							/>
					</td>
					<td>Data Última Atualização:</td>
					<td>
						<input type="text" 
							name="ssi.statusDate" 
							size="9" 
							value="<s:date name='ssi.statusDate' format='dd/MM/yyyy'/>" 
							id="ssi.statusDate">
						<a href="#"><img src="<s:url value='/images/iconecalendario.gif' />" border="0" id="button.statusDate" /></a>
						<script type="text/javascript">
							Calendar.setup({
								inputField : "ssi.creation", 
								ifFormat : "%d/%m/%Y", 
								button : "button.creation"
							});
							Calendar.setup({
								inputField : "ssi.start", 
								ifFormat : "%d/%m/%Y", 
								button : "button.start"
							});
							Calendar.setup({
								inputField : "ssi.finish", 
								ifFormat : "%d/%m/%Y", 
								button : "button.finish"
							});
							Calendar.setup({
								inputField : "ssi.statusDate", 
								ifFormat : "%d/%m/%Y", 
								button : "button.statusDate"
							});
						</script>
					</td>
				</tr>
				<tr>
					<td colspan="8">&nbsp;</td>
				</tr>
				<tr>
					<td colspan="8" align="right">
						<s:hidden name="ssi.id" id="ssi.id" value="%{ssi.id}"></s:hidden>
						<span onclick="javascript:document.forms[0].submit();" style="cursor: pointer;">
							<img src='<s:url value="/images/btgravar.gif" />' border="0"/>
						</span >
						<span  onclick="javascript:parent.location.replace('index.jsp');" style="cursor: pointer;">
							<img src='<s:url value="/images/btcancelar.gif" />' border="0"/>
						</span >
					</td>
				</tr>
			</table>
			</td>
		</tr>
	</table>
</s:form>
</body>
</html>

e meu struts.xml


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <constant name="struts.objectFactory" value="spring" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.locale" value="en_GB" />
    <constant name="struts.i18n.encoding" value="LATIN1" />   
    
    <package name="dashboard" namespace="/" extends="struts-default">

        <action name="ssi!*" method="{1}"  class="MyAction">
            <result name="input">/nav/ssi/edit.jsp</result>
			<result name="error">/nav/ssi/edit.jsp</result>
            <result name="edit">/nav/ssi/edit.jsp</result>
            <result name="list">/nav/ssi/list.jsp</result>
            <result name="listssi" type="redirect-action">
		        <param name="actionName">ssi!list</param>
		        <param name="namespace">/</param>
		    </result>
            <result name="show">/nav/ssi/show.jsp</result>
            <result name="showssi" type="redirect-action">
		        <param name="actionName">ssi!show</param>
		        <param name="namespace">/</param>
		        <param name="ssi.id">${ssi.id}</param>
		    </result>
            <result name="success">/nav/ssi/edit.jsp</result>
            <result name="tree">/nav/ssi/tree.jsp</result>
        </action>
        
        

    </package>
    
</struts>

mesmo eu chamando por “ssi!list.action” ele ja da o seguinte exception

12:31:14,078 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
tag 'select', field 'list', id 'ssi.application.id', name 'ssi.application.id': The requested list key 'applications' could not be resolved as a
collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
        at org.apache.struts2.components.Component.fieldError(Component.java:231)
        at org.apache.struts2.components.Component.findValue(Component.java:293)
        at org.apache.struts2.components.ListUIBean.evaluateExtraParams(ListUIBean.java:79)
        at org.apache.struts2.components.Select.evaluateExtraParams(Select.java:99)
        at org.apache.struts2.components.UIBean.evaluateParams(UIBean.java:780)
        at org.apache.struts2.components.UIBean.end(UIBean.java:481)
        at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:43)
        at org.apache.jsp.nav.ssi.edit_jsp._jspx_meth_s_select_0(org.apache.jsp.nav.ssi.edit_jsp:660)
        at org.apache.jsp.nav.ssi.edit_jsp._jspx_meth_s_form_0(org.apache.jsp.nav.ssi.edit_jsp:336)
        at org.apache.jsp.nav.ssi.edit_jsp._jspService(org.apache.jsp.nav.ssi.edit_jsp:122)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
        at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:139)
        at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178)
        at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
        at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
        at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
        at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:186)
        at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:206)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:121)
        at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:123)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
        at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
        at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
        at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50)
        at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504)
        at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
        at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:159)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
        at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
        at java.lang.Thread.run(Unknown Source)

se eu retirar apenas o @RequiredStringValidator(message = “Please enter a name”) da minha action, ele rederia a pagina sem maiores problemas…

alguem poderia me ajudar?

Att.,
Kleber Pinel Bernardo da Silva

Cara, as annotations de validação geralemente vão em cima de algum método que vc quer validar e não em cima dos sets…

(Pensando bem, acho que o lugar não importa). Agora uma coisa é certa, vc não precisa usar SkipValidation nos seus métodos gets e sets. Use apenas no método que vc invoca pelo view…

No key, acho que vc deve colocar apenas o nome da propriedade e não o nome do objeto + nome da propriedade. (essa parte não tenho muita certeza pois não uso struts 2 no view, uso ele apenas no controller)

mas todos os lugares q eu vi é colocado em cima dos set… pois eu qro validar o valor q sera passado do form… depois do submit… não intendi qunado vc diz “vão em cima de algum método que vc quer validar” pois eu qro validar o parametro q será passado pelo form…

sobre o SkipValidation eu imaginava q não precisa colocar em tudo… mas estou tentando um poko de cada coisa e ver o q vai funcionar… hehehe

obrigado…

Pela mensagem de erro que deu, é quase certeza que tem alguma coisa haver com os nomes que está colocando no view…

Eu não rodei seu exemplo, mas no caso, vc está querendo enviar os valores que estão em inputs para dentro daqueles lists, é isso? Se for, acho que no name deles precisa estar com []. Por exemplo name=“employees[]” ou name=“employees[0]”

o estranho é que se eu tiro os annotations de Validação da Action, a pagina é renderizada sem maiores problemas… por isso q eu acho q tem alguma coisa haver com a validação…

inclusive o <s:select é carregado sem nenhum erro… e vem até marcado com o valor q tiver selecionado…

mt estranho

Realmente estranho. Todas as validações no meu sistema estão com annotations e nunca deu ese tipo de problema, e essa é a exata versão do struts 2 que estou usando…

o que me intiga são essas linhas:

[code]# tag ‘select’, field ‘list’, id ‘ssi.application.id’, name ‘ssi.application.id’: The requested list key ‘applications’ could not be resolved as a

collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location] [/code]