Parámetros de asignación de comodines avanzados que no se encuentran en el método Prepare ()

De la documentación:Asignaciones de comodines avanzadas de Struts2:

Comodines avanzados

Desde 2.1.9+, las expresiones regulares se pueden definir definidas en el nombre de la acción. Para usar esta forma de comodín, se deben establecer las siguientes constantes:

<constant name="struts.enable.SlashesInActionNames" value="true"/> 
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
<constant name="struts.patternMatcher" value="regex" />

Las expresiones regulares pueden ser de dos formas, la más simple es{FIELD_NAME}, en cuyo caso el campo con elFIELD_NAME en la acción se rellenará con el texto coincidente, por ejemplo:

<package name="books" extends="struts-default" namespace="/">
    <action name="/{type}/content/{title}" class="example.BookAction">
        <result>/books/content.jsp</result>
    </action> 
</package>

En este ejemplo, si la url/fiction/content/Frankenstein Se solicita, campo de BookAction "type"se establecerá en"fiction", y el campo"title"se establecerá en"Frankenstein".

Esto es absolutamente genial, y funciona bien si lees esas variables en un método de acción regular, comoexecute().

Si intentas leerlos desde elprepare() método, son nulos, porque laPrepareInterceptor corre antes que los otros Interceptores responsables de configurar los parámetros; la forma habitual de resolver este problema es utilizar la pila de interceptores correspondiente para obtener los parámetros ya rellenados al ejecutar elprepare() método...

De la documentación:ParamsPrepareParamStack

<!-- An example of the paramsPrepareParams trick. This stack
     is exactly the same as the defaultStack, except that it
     includes one extra interceptor before the prepare interceptor:
     the params interceptor.

     This is useful for when you wish to apply parameters directly
     to an object that you wish to load externally (such as a DAO
     or database or service layer), but can't load that object
     until at least the ID parameter has been loaded. By loading
     the parameters twice, you can retrieve the object in the
     prepare() method, allowing the second params interceptor to
     apply the values on the object. -->

Esto funciona muy bien para los parámetros que vienen de la página, perono funciona para los parámetros establecidos por los comodines avanzados. Todavía son nulos.

Cómo resolver este problema ?

Respuestas a la pregunta(2)

Su respuesta a la pregunta