<html:option "selected" no Struts

Bom dia pessoal!

Estou estudando o Struts e montando um exemplo diferente de qualquer livro ou tutorial, porém me deparei com um pequeno problema ao utilizar as tagLibs do Struts: Na tag <html:option> percebi que não existe um “selected” como no HTML, alguém tem alguma sugestão de como solucionar essa falta.

PS: Estou utilizando o Struts 1.1.

Desde já agradeço a atenção,

Abraços,

Dentro da tag option coloca isso selected=“selected”

Valeu Luiz, mas isso não funciona porque na especificação da TagLib html não suporta este atributo, veja abaixo a mensagem de erro no browser:

Attribute selected invalid according to the specified TLD

Como pode ver em:

http://struts.apache.org/userGuide/struts-html.html#option

Porém, estou resolvendo de outra maneira (code fish):

&lt;tr&gt; &lt;td class=&quot;nomecampo&quot; width=&quot;100&quot;&gt;Sexo&#58;&lt;/td&gt; &lt;td class=&quot;textos&quot;&gt; &lt;request&#58;attribute name='sexo'/&gt; &lt;% String teste = &#40;String&#41;request.getAttribute&#40;&quot;sexo&quot;&#41;; %&gt; &lt;html&#58;select property=&quot;sexo&quot; value=&quot;&lt;%=teste%&gt;&quot; styleClass=&quot;campo&quot;&gt; &lt;html&#58;option value=&quot;M&quot;&gt;Masculino&lt;/html&#58;option&gt; &lt;html&#58;option value=&quot;F&quot;&gt;Feminino&lt;/html&#58;option&gt; &lt;/html&#58;select&gt; &lt;/td&gt; &lt;/tr&gt;

Valeu!

Abraços!

Se o bean, que vc definiu para o form, possuir o atributo sexo o struts faz isso automaticamente pra vc…

Foi isso que tentei fazer, pois tenho o atributo sexo no bean… porém ao colocar

&lt;html&#58;select property=&quot;sexo&quot; value=&quot;sexo&quot; styleClass=&quot;campo&quot;&gt;

ele não funciona pois fica como sendo a “selected” a primeira <option>.

Tentei fazer assim:

&lt;html&#58;select property=&quot;sexo&quot; value=&quot;&lt;request&#58;attribute name='sexo'/&gt;&quot; styleClass=&quot;campo&quot;&gt;

mas o erro foi o mesmo.

Qual solução você sugere?

Abraços!

Eu não sei o que vc já fez, então vamos por partes…

No struts-config.xml:
Defina o form bean

&lt;form-bean name=&quot;SeuForm&quot; type=&quot;pacote.SeuForm&quot; /&gt;

Referencie o bean na definição da action

&lt;action path=&quot;/SuaAction&quot; ... name=&quot;SeuForm&quot; scope=&quot;request&quot; ... &gt;

Na jsp:

&lt;html&#58;form action=&quot;/SuaAction&quot;&gt; &lt;html&#58;select property=&quot;sexo&quot; styleClass=&quot;campo&quot;&gt; &lt;html&#58;option value=&quot;M&quot;&gt;Masculino&lt;/html&#58;option&gt; &lt;html&#58;option value=&quot;F&quot;&gt;Feminino&lt;/html&#58;option&gt; &lt;/html&#58;select&gt; &lt;/html&#58;form&gt;

A primeira vez que a página for executada, o bean não tera valor nenhum então a primeira opção virá selecionada, mas depois que um valor for escolhido o struts irá selecionar o valor que estiver no bean (M ou F)

Infelizmente não rolou… será que é porque estou utilizando o Struts 1.1?

Está assim:

No struts-config.xml:

... &lt;form-bean name=&quot;frmDetalhar&quot; type=&quot;pct.actions.DetalheForm&quot;/&gt; ... &lt;action path=&quot;/Detalhe&quot; scope=&quot;request&quot; type=&quot;pct.controller.DetalheAction&quot; name=&quot;frmDetalhar&quot;&gt; &lt;forward name=&quot;acao&quot; path=&quot;/retorno.jsp&quot;/&gt; &lt;forward name=&quot;voltar&quot; path=&quot;/consultar.jsp&quot;/&gt; &lt;/action&gt; ...

Na JSP:

... &lt;html&#58;form name=&quot;frmDetalhar&quot; method=&quot;post&quot; target=&quot;Escondido&quot; action=&quot;Detalhe&quot; type=&quot;pct.actions.DetalheForm&quot;&gt; ... &lt;html&#58;select property=&quot;sexo&quot; styleClass=&quot;campo&quot;&gt; &lt;html&#58;option value=&quot;M&quot;&gt;Masculino&lt;/html&#58;option&gt; &lt;html&#58;option value=&quot;F&quot;&gt;Feminino&lt;/html&#58;option&gt; &lt;/html&#58;select&gt; &lt;/html&#58;form&gt; ...

Pois é… nem na segunda vez ele funcionou… vem sempre na combo o “Masculino” como default.

Eu li que poderia utilizar o atributo “value” da tag <html:select> para o Struts marcar o conteúdo do mesmo como sendo o “selected”, mas não consigo fazer isso pois para pegar o atributo eu até utilizo a tag “request”, mas não funciona dentro de outra tag. Aí, a solução (feia) que encontrei foi usar scriptlets da seguinte forma no JSP:

&lt;% String sexo = &#40;String&#41;request.getAttribute&#40;&quot;sexo&quot;&#41;; %&gt; &lt;html&#58;select property=&quot;sexo&quot; value=&quot;&lt;%=sexo%&gt;&quot; styleClass=&quot;campo&quot;&gt; &lt;html&#58;option value=&quot;M&quot;&gt;Masculino&lt;/html&#58;option&gt; &lt;html&#58;option value=&quot;F&quot;&gt;Feminino&lt;/html&#58;option&gt; &lt;/html&#58;select&gt;

Muito obrigado!

Abraços!

[quote=Filipe Saraiva]Valeu Luiz, mas isso não funciona porque na especificação da TagLib html não suporta este atributo, veja abaixo a mensagem de erro no browser:

Attribute selected invalid according to the specified TLD

Como pode ver em:

http://struts.apache.org/userGuide/struts-html.html#option

Porém, estou resolvendo de outra maneira (code fish):

&lt;tr&gt; &lt;td class=&quot;nomecampo&quot; width=&quot;100&quot;&gt;Sexo&#58;&lt;/td&gt; &lt;td class=&quot;textos&quot;&gt; &lt;request&#58;attribute name='sexo'/&gt; &lt;% String teste = &#40;String&#41;request.getAttribute&#40;&quot;sexo&quot;&#41;; %&gt; &lt;html&#58;select property=&quot;sexo&quot; value=&quot;&lt;%=teste%&gt;&quot; styleClass=&quot;campo&quot;&gt; &lt;html&#58;option value=&quot;M&quot;&gt;Masculino&lt;/html&#58;option&gt; &lt;html&#58;option value=&quot;F&quot;&gt;Feminino&lt;/html&#58;option&gt; &lt;/html&#58;select&gt; &lt;/td&gt; &lt;/tr&gt;

Valeu!

Abraços![/quote]

Fiz o mesmo que vc fez… só que usei EL na hora de botar o value=

Ficou assim : UF:<html:select property=“coUf” value="${param.coUf}" onchange=“autoSubmitform();”>

Funcionou na boa ! Obrigado !

nao sei se esse eh o problemas…

mas em todos formularios jsp q ja usei…
eu chamo a action assim…

<html:form action=/Detalhe.do />