Ognl em Struts 2

4 respostas
R

Ola pessoal, estou com um problema pra criar uma variavel dinamica no struts 2, tenho campos que são gerados dinamicamente no meu formulario e consequentemente a exibição desses valores é dinamico.

Estou tentando concatenar 2 variaveis e pegar o valor dessa concatenacao(que é a variavel dinamica). Ex: No meu form preciso exibir dinamicante o valor do indice do iterator concatenado com "_" e concatenado com uma propriedade da lista do iterator. Meu codigo ficaria assim:

1º problema
<s:iterator value="%{[0].itensComNrDeSerie}" status="status" >
// id_item deveria ser igual a "1_2"  por exemplo, mas nao retorna nada por causa do "_%{idItem}". Se coloco somente %{#status.index} ou somente %{idItem}, funciona.
<s:set name="id_item" value="%{#status.index}_%{idItem}" />  
</s:iterator>

2º problema
se o primeiro problema fosse resolvido, ou seja, a variavel id_item sendo igual a "1_2", preciso finalmente colocar esse "1_2" como variavel do meu request, entao ficaria assim:

<s:textfield  name="%{#status.index}_%{idItem}" value="%{[0].getServletRequest().getParameter('%{id_item}')}"/>

O estranho é que o nome do campo eu consigo setar dinamicamente, nesse caso o nome do input ficaria igual a "1_2" por exemplo, tentei colocar o mesmo codigo dentro do getServetRequest... mas nao funciona, por isso tentei usando a variavel id_item, mas tbm nao funciona. O resultado final do meu input deveria ser assim:

<s:textfield  name="1_2" value="algum valor que esta dentro da variavel 1_2 que pego via post"/>

O codigo final esta assim:

<s:iterator value="%{[0].itensComNrDeSerie}" status="status" >
						<s:if test="#status.first">					
							<tr>
								<td colspan="3" class="cabecalho">Itens com Número de série</td>
							</tr>
							<tr>
								<td width="200" class="titulo">Id</td>
								<td class="titulo" width="100">Descrição</td>			
								<td class="titulo"> de série</td>			
							</tr>
						</s:if>
						<tr>
							<td  class="item" ><s:property value="idItem"/></td>
							<td  class="item"> <s:property value="nomeItem"/></td>	
							<s:set name="id_item" value="%{#status.index}_%{idItem}" />
							
							<td class="item"><s:textfield  name="%{#status.index}_%{idItem}" value="%{[0].getServletRequest().getParameter('%{id_item}')}"/>
							
							</td>
						</tr>	
					</s:iterator>

Espero que possam me ajudar!

abraços!!!

4 Respostas

R

up

ThiagoWorldCoder

Tenta usar o s:component!

Ele serve pra colocar juntar valores de campos diferentes… como uma data!

Dá uma pesquisada que isso deve resolver!!

falow!

Mordor

Estou com um problema parecido, preciso mostrar os valores de alguns campos dinamicamente.
Na variavel “listaCampos” eu tenho o nome dos campos que eu quero ver.

&lt;s:iterator value="listaCampos"&gt;
   &lt;s:property value="top"/&gt;
&lt;/s:iterator&gt;

Oque aparece na tela é os nomes dos campos e não os valores das variaveis.
Se eu colocar direto <s:property value=“id”> ele tras o id sem problema.
Alguem ja passou por isso?

Mordor

Resolvido:

<s:property value="#attr[top]"/>

:lol:

Criado 8 de setembro de 2009
Ultima resposta 19 de mar. de 2010
Respostas 4
Participantes 3