Retornar um item escolhido do iterate

3 respostas
E

Pessoal,

Fiz uma página que recebe uma collection de itens de uma ordem de serviço, exibo com o iterate, blz funciona muito bem, mas preciso retornar o número da ordem de serviço do item escolhido.

Estou com três dúvidas:

1- Como faço no iterate para que apereça um botão de submit para cada linha da tabela-html e fazer com que quando eu clique em determinado botão de uma linha dessa tabela somente essa linha seja enviada e não a coleção (collection) toda. Como seria?

2- Caso não dê para fazer com um botão de submit para cada item. Daria para fazer com link? Como seria?

3- Como ficaria o meu action para receber essa ocorrência?

Estou usando o Strust 1.1 e Tomcat.

Não sei se fui claro, agradeço quem puder me ajudar.

<html:form action="/detalheOS"> <input type="hidden" name="acao" /> <--% Não tenho certeza se com o iterate com o botão submit por item, terei que chamar o action dessa forma -- %> ... <tr> <logic:iterate id="item" name="oItens" > <html:button property="concluir" value="Detalhe" /> <bean:write name="item" property="numeroOS" /> <bean:write name="item" property="servicoExecutado" /> ... </tr> </logic:iterate> ...

3 Respostas

S
<html:form action="/detalheOS"> 
<input type="hidden" name="acao" /> 
<--% Não tenho certeza se com o iterate com o botão submit por item, terei que chamar o action dessa forma -- %> 
... 
<tr> 
<logic:iterate id="item" name="oItens" > 
          <bean:write name="item" property="numeroOS" /> 
          <bean:write name="item" property="servicoExecutado" /> 
          <input type="button" value="ok" onclick="enviaOs(${item[0]})"/>
         
... 
</tr> 
</logic:iterate> 
...

Tem que testar isso ${item[0]} mas acho que funciona, e aí o 0 significa o indice da property qye você quer pegar do item.
Aí você faz um JS que seta a ação correta do teu form e executa a action correspondente.
É por aí o caminho

E

Cara,

Tentei aqui e não funcionou, tenho que fazer import de alguma classe ou pacote?

Coloquei um alert no meu JS para ver a ação que esta enviando. Quando coloco uma string qualquer funciona, mas com o ${item[0]} clico no botão e não acontece nada, nenhuma mensagem aparece.

...
function enviar(acao)
{		
		alert(acao);
		document.forms[0].acao.value = acao;
		document.forms[0].submit();
	
}
...

<html:form action="/principal">
<input type="hidden" name="acao" />
...
<logic:iterate id="item" name="oItens" >

<bean:write name="item" property="numeroOS" />
<bean:write name="item" property="servicoExecutado" />
<input type="button" value="ok" onclick="enviar(${item[0]})"/>

</logic:iterate>
</html:form>
</body>
</html:html>
E
"SdRuboW":
<html:form action="/detalheOS"> 
<input type="hidden" name="acao" /> 
<--% Não tenho certeza se com o iterate com o botão submit por item, terei que chamar o action dessa forma -- %> 
... 
<tr> 
<logic:iterate id="item" name="oItens" > 
          <bean:write name="item" property="numeroOS" /> 
          <bean:write name="item" property="servicoExecutado" /> 
          <input type="button" value="ok" onclick="enviaOs(${item[0]})"/>
         
... 
</tr> 
</logic:iterate> 
...

Tem que testar isso ${item[0]} mas acho que funciona, e aí o 0 significa o indice da property qye você quer pegar do item.
Aí você faz um JS que seta a ação correta do teu form e executa a action correspondente.
É por aí o caminho

Cara,

Tentei aqui e não funcionou, tenho que fazer import de alguma classe ou pacote?

Coloquei um alert no meu JS para ver a ação que esta enviando. Quando coloco uma string qualquer funciona, mas com o ${item[0]} clico no botão e não acontece nada, nenhuma mensagem aparece.

...
function enviar(acao)
{		
		alert(acao);
		document.forms[0].acao.value = acao;
		document.forms[0].submit();
	
}
...

<html:form action="/principal">
<input type="hidden" name="acao" />
...
<logic:iterate id="item" name="oItens" >

<bean:write name="item" property="numeroOS" />
<bean:write name="item" property="servicoExecutado" />
<input type="button" value="ok" onclick="enviar(${item[0]})"/>

</logic:iterate>
</html:form>
</body>
</html:html>
Criado 31 de julho de 2005
Ultima resposta 2 de ago. de 2005
Respostas 3
Participantes 2