Re:bug struts 2.0.11 el

Ola .
Esse não é um erro. É uma falha de segurança que foi corrigida nas versoes 2.0.11 e 2.1 que agora nao permite mais o uso de ${} nas tags do struts. Vou procurar o link com maiores informações e depois te passo.
Uma pergunta : no seu exemplo, o index.jsp não deveria chamar um action ao inves do jsp direto ?

Herrera

segue o link de correção na versao 2.0.10

https://issues.apache.org/struts/browse/WW-2107

trecho :

Abçs

Herrera

Eu estranhei jsp chamando jsp pois rompe com o modelo MVC.
O que vc deve fazer é criar uma action para chamar principal.jsp ou nem precisa usar a tag do struts2, use a tag do html mesmo(input) 8) ;

Herrera

Não vejo problemas em um JSP chamar outro JSP.
O MVC não obriga de forma nenhuma a passar por uma action antes de direcionar para uma outra página.
Afinla de contas, pra que servem os links.
Talvez uma alternativa fosse mapear o jsp direto no struts.xml, mas dependendo do caso é muito esforço pra pouca vantagem.

Vou pesquisar um pouco melhor sobre como resolver o uso de JSP EL nas tags do struts após a versão 2.0.11.

Não tenho certeza de que isso está realmente desabilitado, já que na thread citada acima o que foi desabilitado foi a chamada a metodos static.

Respondo aqui mesmo assimque coneguir uma posição melhor.

Abraço a todos!

Seguinte, não ficou muito claro se realmente foi desabilitada a JSP EL do struts 2.
Mas de qualquer forma o que os caras recomendam é usar somente OGNL, até mesmo por causa daquela questão de segurança. Sei que a chamada a métodos static através de OGNL foi desabilitada e isso garante que chamadas a System.exit(0) e afins não serão possíveis.

No entando há a possibilidade de habilitar isso através do struts.properties

Abaixo segue uma (tentativa de) tabela com o uso de OGNL no lugar da EL.

Struts 2 Named Objects

Struts 2 places request parameters and request, session, and application attributes on the OGNL stack. They may be accessed as shown below.

name | value #parameters['foo'] or #parameters.foo | request parameter ['foo'] (request.getParameter()) #request['foo'] or #request.foo | request attribute ['foo'] (request.getAttribute()) #session['foo'] or #session.foo | session attribute 'foo' #application['foo'] or #application.foo | ServletContext attributes 'foo' #attr['foo'] or #attr.foo | Access to PageContext if available, otherwise searches request/session/application respectively
mais ou menos é isso aí ó…

então seu exemplo ficaria assim:

<s:textfield name=“nome” value="#parameters.nome" />

ou

<s:textfield name=“nome” value="#attr.nome" />

Se der erro de evaluation por causa do # então tem que desabilitar a EL. Mas acho que você deverá tomar muito cuidado com isso, pois disso depende a compatibilidade da sua app.

Abração,

Gente o struts 2.0.11 deve estar com bug .

Versao 2.0.9
index.jsp

             <a href="principal.jsp?nome="Pedro"> Iniciar </a>               

principal.jsp

           <s:textfield name="nome" value="${param.nome}" />

Esta funcionando ok com a versao 2.0.9

Versao 2.0.11

index.jsp

             <a href="principal.jsp?nome="Pedro"> Iniciar </a>               

principal.jsp

           <s:textfield name="nome" value="${param.nome}" />

Da um erro na jsp isso com a versao 2.0.11 sendo que o codigo é o mesmo so mudo no projeto .jar do struts !!!

Alguem ja passou por isso e identificou esse erro ?

Falow

Na verdade Herrera funciona das duas formar tanto passando pela jsp como pela action . E como eu faço para realizar este exemplo que estou mostrando aí na jsp na versao que foi corrigida o bug ?

:?: :?: :?: :shock:

Da pra você postar um pequeno exemplo aí ? Ainda nao consegui visualizar o que vc esta dizendo !