Pregunta

Puedo establecer una propiedad en ValueStack en varias maneras.

 ValueStack stack = ActionContext.getContext().getValueStack();
 stack.getContext().put("resultDTO",resultDTO);  //1. creates a different branch 
 //parallel to root

 stack.set("resultDTO", resultDTO); //2. pushes on root as a Map?
 stack.push(resultDTO); //3. pushes on root
 myActionClass.setProperty(); //4. normal action accessor

Tengo que ser capaz de obtener todos estos valores en JSP, freemarker y java como

 stack.findValue() or stack.findString().    

Quiero saber sobre el ciclo de vida de cada uno de estos 4 configuración de los métodos.Es a través de la aplicación.Es el ValueStack creado cada solicitud y la aplicación de la sesión y de los valores en que para cada solicitud?

Sé el 4 de método es el método más común, pero puede que no sea el uso que en todos los lugares, en los que la acción de clase no es fácilmente accesible.

Tengo otra duda sobre el acceso en JSP

 <s:push value="resultDTO" ><s:property value="data.form1[0]" /></s:push>
 <!--5.works for context.put() & stack.set() both-->

 <s:property value="#resultDTO.data.form1[0].countryofissue" /> <!--6.context.put()-->
 <s:property value="resultDTO.data.form1[0].countryofissue" />  <!--7.stack.set()-->
 <s:property value="data.form1[0].countryofissue" />            <!--8.stack.push()-->

También quiero saber cómo 5º punto funciona en ambos stack.getContex().put() y stack.set()?Entiendo que en 6 de los resultDTO Yo soy el acceso, es una raíz diferente y en 7, es el hijo de raíz predeterminado, que es ValueStack.En 8 se inicia la búsqueda de la raíz predeterminado.

Me fui a través de http://struts.apache.org/2.0.11.1/docs/ognl.html, http://struts.apache.org/2.1.2/struts2-core/apidocs/com/opensymphony/xwork2/util/ValueStack.html y bastante confusa este enlace http://www.opensymphony.com/ognl/html/DeveloperGuide/introduction.html#embeddingOGNL

Después de haber dicho todas estas yo soy poco proclive a la utilización de stack.getContext().put() método como el que se puede ver claramente los valores en la configuración de la url como ?debug=navegador.Que me aconsejan si voy mal.

¿Fue útil?

Solución

El ValueStack es por solicitud.Si usted coloca los valores en la pila, son accesibles después de la solicitud (es decir, en la capa de la vista), pero no iba a sobrevivir una redirección, lo que sería una nueva petición HTTP y tiene su propia ValueStack.

En condiciones normales, los parámetros en la URL o en un formulario post sería establecer en la acción por medio de la acción de métodos setter.En un interceptor, usted puede agregar directamente los valores de la pila.Por ejemplo, la ExceptionMappingInterceptor utiliza el stack.push(Object) método para publicar excepciones para su uso en las páginas de error.

  • stack.getContext().put(String, Object) - Los lugares clave/valor en un mapa que vive en la pila.El mapa representa el contexto de la pila.
  • stack.set(String, Object) - Los lugares clave/valor en un mapa que vive en la pila.No estoy seguro de cómo esto se relaciona con el método anterior, aparte de que es un mapa diferente.
  • stack.push(Object) -- Esto coloca el objeto en la raíz de la pila.

No es necesario colocar nada en la pila desde dentro de la capa de la vista, así que tengo curiosidad por lo que está tratando de hacer que requiere que.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top