JSF + JSTL - Duvida básica

Olá a todos…

Tentei fazer uns coisas básicas com JSF + JSTL e nao funcionaram.

Isto não funciona?

             <t:dataTable id="data" value="#{loginBean.clientes}"  var="cliente" border="1" >
                
                <h:column>
	               	<f:facet name="header">
	                  <h:panelGroup>
	                    <h:outputText value="#{msgs['tabela_nome']}" />
	                    <h:outputText value="*" style="color:red;"/>
	                  </h:panelGroup>
	               	</f:facet>
	               	<h:panelGroup>
	               		<h:inputText id="ciso" value="#{cliente.nome}" required="true" />
	               		<h:outputText value="#{cliente.nome}"/>
	               	</h:panelGroup>

	               	<c:if test="${'1' eq '1' }">
			<br>OOOIIII<br>
		&lt;/c:if&gt;

           		&lt;/h:column&gt;
                
            &lt;/t:dataTable&gt;

Isto também não funciona?

&lt;c:forEach var="cliente" items="${loginBean.clientes}" varStatus="index"&gt;
      ${cliente.nome} ${cliente.sobrenome} <br>	
      &lt;h:outputText value="#{cliente.nome}"/&gt;	
&lt;/c:forEach&gt;

Eu sei que fazer isto no Struts é mole, mas no JSF não funciona. Será que é isto mesmo :?: :cry:

Obrigado

Você quer criar um combo com varias itens?

Não… Eu apenas quero saber se o q eu fiz funciona.

Olá

Warley, dependendo da forma como você mistura JSTL e JSF não funciona como deveria.
Não tem como usar só JSF?

Pois é… vou ter q usar somente JSF.

Veja uma situação muito simples:
Eu tenho uma tabela que retorna uma lista de pessoas. E um dos atributos é o sexo. No caso quando este valor chega na tela ele vem como F ou M. Mas eu tenho que tratar e colocar Masculino ou Feminino ou ainda eu estava pensando em usar um imagem para representar o sexo, que se for F eu coloco uma imagem de um mulher senão uma imagem de homem.

E fazer isto com Struts e JSTL é mole, basta eu colocar um if e pronto.
Mas como eu faria isto com JSF? Eu vou ter que fazer isto no momento que eu monto a lista de pessoas.

Achei muito ruim! Eu não sabia que o JSF não suportava o JSTL e coisas simple, como o exemplo de cima, que eu fazia em 1 minuto, eu vou ter que dar uma voltar para fazer com JSF.

[quote=warley]Pois é… vou ter q usar somente JSF.

Veja uma situação muito simples:
Eu tenho uma tabela que retorna uma lista de pessoas. E um dos atributos é o sexo. No caso quando este valor chega na tela ele vem como F ou M. Mas eu tenho que tratar e colocar Masculino ou Feminino ou ainda eu estava pensando em usar um imagem para representar o sexo, que se for F eu coloco uma imagem de um mulher senão uma imagem de homem.
[/quote]

Fala cara, não sei se já resolveu o problema, vou tentar dar uma força.
Vamos usar o seu exemplo acima, uma lista de pessoas, e quando for masculino atribuir uma imagem, e feminino outra:

&lt;h:dataTable id="data" value="#{loginBean.clientes}" var="cliente" border="1" &gt; &lt;h:column&gt; &lt;f:facet name="header"&gt;Nome&lt;/f:facet&gt; &lt;h:outputText value="#{cliente.nome}"/&gt; &lt;/h:column&gt; &lt;h:column&gt; &lt;f:facet name="header"&gt;Sexo&lt;/f:facet&gt; &lt;h:graphicImage value="#{cliente.sexo == 'M' ? '/img/masculino.gif' : '/img/masculino.gif'}"/&gt; &lt;/h:column&gt; &lt;/h:dataTable&gt;

Então, ali no componente graphicImage eu usei Expression Language no atributo value, aí funciona como o if do JSTL que vc queria. Você pode usar o EL em qualquer atributo dos componentes do JSF (eu acho :smiley: ).

Abraços.

JSTL não deve ser utilizado para renderizar código (X)HTML, mas sim para construir a árvore de componentes.

Por que isso não funciona?

<rich:column>
				<c:choose>
				<c:when test="#{dt.usuarioadm == true}" >
					<c:set var="url" value="/images/sucesso.png"/>
				</c:when>
				<c:otherwise>
					<c:set var="url" value="/images/erro.png"/>
				</c:otherwise> 
				</c:choose>
				<h:graphicImage url="#{var}"/>
				</rich:column>

seguinte tenho uma tela de permissões quero que de acordo com o valor true ou false a coluna receba uma imagem verde ou vermelha…

parece simples mas não sei como fazer

por favor me ajudem?

Basta vc usar o atributo rendered. Veja o código.

&lt;h:graphicImage value="/imagens/icone/icon_risco_baixo.gif" alt="Baixo" rendered="#{riscos.status eq 'B'}" /&gt;
&lt;h:graphicImage value="/imagens/icone/icon_risco_medio.gif" alt="Médio" rendered="#{riscos.status eq 'M'}" /&gt;
&lt;h:graphicImage value="/imagens/icone/icon_risco_alto.gif"  alt="Alto" rendered="#{riscos.status eq 'A'}" /&gt;

cara muito obrigado, valew mesmo