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 ):
<tr>
<td class="nomecampo" width="100">Sexo:</td>
<td class="textos">
<request:attribute name='sexo'/>
<% String teste = (String)request.getAttribute("sexo"); %>
<html:select property="sexo" value="<%=teste%>" styleClass="campo">
<html:option value="M">Masculino</html:option>
<html:option value="F">Feminino</html:option>
</html:select>
</td>
</tr>
Valeu!
Abraços!
code
Novembro 4, 2004, 1:39pm
#4
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
<html:select property="sexo" value="sexo" styleClass="campo">
ele não funciona pois fica como sendo a “selected ” a primeira <option >.
Tentei fazer assim:
<html:select property="sexo" value="<request:attribute name='sexo'/>" styleClass="campo">
mas o erro foi o mesmo.
Qual solução você sugere?
Abraços!
code
Novembro 4, 2004, 3:58pm
#6
Eu não sei o que vc já fez, então vamos por partes…
No struts-config.xml:
Defina o form bean
<form-bean name="SeuForm" type="pacote.SeuForm" />
Referencie o bean na definição da action
<action
path="/SuaAction"
...
name="SeuForm"
scope="request"
...
>
Na jsp:
<html:form action="/SuaAction">
<html:select property="sexo" styleClass="campo">
<html:option value="M">Masculino</html:option>
<html:option value="F">Feminino</html:option>
</html:select>
</html:form>
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:
...
<form-bean name="frmDetalhar" type="pct.actions.DetalheForm"/>
...
<action path="/Detalhe" scope="request" type="pct.controller.DetalheAction" name="frmDetalhar">
<forward name="acao" path="/retorno.jsp"/>
<forward name="voltar" path="/consultar.jsp"/>
</action>
...
Na JSP:
...
<html:form name="frmDetalhar" method="post" target="Escondido" action="Detalhe" type="pct.actions.DetalheForm">
...
<html:select property="sexo" styleClass="campo">
<html:option value="M">Masculino</html:option>
<html:option value="F">Feminino</html:option>
</html:select>
</html:form>
...
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:
<% String sexo = (String)request.getAttribute("sexo"); %>
<html:select property="sexo" value="<%=sexo%>" styleClass="campo">
<html:option value="M">Masculino</html:option>
<html:option value="F">Feminino</html:option>
</html:select>
Muito obrigado!
Abraços!
fwerly
Agosto 9, 2007, 3:31pm
#8
[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 ):
<tr>
<td class="nomecampo" width="100">Sexo:</td>
<td class="textos">
<request:attribute name='sexo'/>
<% String teste = (String)request.getAttribute("sexo"); %>
<html:select property="sexo" value="<%=teste%>" styleClass="campo">
<html:option value="M">Masculino</html:option>
<html:option value="F">Feminino</html:option>
</html:select>
</td>
</tr>
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 />