pessoal pq isto nao funciona?
<h:panelGrid columns="2" cellspacing="5" border="0">
<ui:repeat var="idx" value="#{clienteBean.lindex}">
<br />
<c:if test="${idx.tipo eq STR}" >
<h:outputText value="#{idx.tipo}" />
</c:if>
</ui:repeat>
</h:panelGrid>
o que estou fazendo de errado?
abç
drsmachado vou explicar o meu problema derrepende vc me dar uma solução e eu nao tenho que voltar ao scriptlet
bom eu tenho uma tabela chamada campo e outro chamada combo, dentro da campo tenho um atributo que é o tipo de campo, que pode ser CMB para combo STR para String e DAT para data e assim vai, na tabela de combo eu tenho o itens do combo associando com o tipo, deu pra entender??
entou precisando criar estes campo dinamicamente na tela, eu consegui com o datagrid mais pelo jeito ele nao me retorna a lista pro meu manager bean, pq nao consegui pegar os valores digitados, agora estou usando o repeat tb não sei se fuinciona, outra alternativa que achei seria gerar estes componetes no manager bean mais nao tenho conhecimento tão afundo no JSF pra isso… entao o que vc me aconselha??
codigo antigo usando dataGrid:
<h:form>
<p:growl id="msgs" showDetail="true" />
<p:panel header="Indexadores" style="margin-bottom:10px;height:auto;width:600px;" rendered="true">
<p:dataGrid value="#{clienteBean.lindex}" var="index" columns="1" widgetVar="lindex">
<p:column>
<h:panelGrid columns="5" cellspacing="5" border="0">
<h:outputLabel value="#{index.label}: " rendered="true" />
<p:inputText value="#{index.textInput}" rendered="#{index.isinput}" >
<f:param name="id" value="#{index}" />
</p:inputText>
<p:inputTextarea value="#{index.txtArea}" rendered="#{index.istxt}" style="width:300px" />
<p:inputText value="#{index.textInput}" rendered="#{index.isnum}" />
<h:panelGroup>
<p:calendar rendered="#{index.isdat}" style="width:10px;" />
<h:outputLabel value="até: " rendered="#{index.isdat}" />
<p:calendar rendered="#{index.isdat}" style="width:10px;"/>
</h:panelGroup>
<p:selectOneMenu rendered="#{index.iscombo}" >
<f:selectItems value="#{index.lcombo}" var="combo" itemLabel="#{combo.opcao}" itemValue="#{combo.id}" />
</p:selectOneMenu>
</h:panelGrid>
</p:column>
</p:dataGrid>
<br />
<p:commandButton type="Submit" value="salvar" ajax="false" action="#{ClienteBean.salvarIndexadores}" oncomplete="carDialog.show()" />
<p:dialog header="Car Detail" widgetVar="carDialog" resizable="false" draggable="false"
width="200" showEffect="fade" hideEffect="fade" modal="true" >
</p:dialog>
</p:panel>
</h:form>
no managerbean:
public void salvarIndexadores(){
List<Indexador> index = getLindex();
for(Indexador idx: index){
System.out.println(idx.getLabel());
System.out.println(idx.getTextInput());
}
}
estava tendando resgatar desse jeito a lista mais ela vem nula
so mais uma pergunta o if do JSTL nao funciona bem com o JSF??
nao consegui fazer ele funcionar
cara desculpa o texto gigante mais estou ficando loou com isso e nao consigo resolver.
aguardo seu retorno e obrigado.
abç!!
Ele funciona.
Acontece que isso
<c:if test="${idx.tipo eq STR}" >
Não funciona em lugar algum.
STR, DAT ou CMB devem estar guarnecidos por aspas simples, para que faça sentido ao JSTL a comparação.
Isto
<c:if test="${idx.tipo eq 'STR'}" >
deveria funcionar.
Outra solução seria deixar os campos criados na xhtml e, através da propriedade rendered, definir se o mesmo poderá ser renderizado ou não. Porém, isto tornaria a tua xhtml muito extensa.
o problema é que eu posso ter o mesmo input varias vezes… entao o valeu dele seria igual e eu pagaria o ultimo, o que eu queria é saber se tem como eu pegar a lista que foi iterada no dataGrid no meu managerbean e se sim como eu faço isso…
sobre o if eu coloquei com aspa simples tb e nao funcionou…
obrigado pela atenção
abç