Pessoal,
Tenho o seguinte código:
<h:selectOneMenu value="#{linkResolver.codigo}" id="tipoLink">
<f:selectItem itemValue="" itemLabel="" />
<f:selectItems value="#{linkResolver.tipos}" />
<a4j:support event="onchange" reRender="linkDataTable"></a4j:support>
</h:selectOneMenu>
e:
<rich:dataTable
width="100%"
id="linkDataTable"
onRowMouseOver="this.style.backgroundColor='#d8e2e4'"
onRowMouseOut="this.style.backgroundColor='white'"
onRowClick="linkGridRadioCheck('#{link.link}','#{link.nomeLink}')"
cellpadding="0"
cellspacing="0"
rows="5"
reRender="ds"
var="link" value="#{linkResolver.dataModel}">
/..
</rich:dataTable>
A partir do código setado no combobox, pego um dataModel diferente pra renderizar em tela. Bem simples.
Mas, no setter do código, coloquei o seguinte:
public void setCodigo(String codigo) {
System.out.println("Setting code: " + codigo);
this.codigo = codigo;
}
E está aparecendo "Setting code: " assim vazio.
Nunca está setando com os códigos do combo. Algum pode dar uma ajuda?
Tudo isso está dentro de um modalPanel.
Qual o escopo que está utilizando no seu bean “linkResolver”?
to usando Spring, por enquanto está como singleton…
Tente o seguinte:
public void loadDataModel() {
System.out.println("The value of code atribbute is: " + this.code);
//Codido para montar o datamodel.
}
Olá Guilherme,
para funfar tente o seguinte.
<h:selectOneMenu value="#{linkResolver.codigo}" id="tipoLink" binding="#{linkResolver.codigo}">
<f:selectItem itemValue="" itemLabel="" />
<f:selectItems value="#{linkResolver.tipos}" />
<a4j:support event="onchange" reRender="linkDataTable"></a4j:support>
</h:selectOneMenu>
teste ai e qqr coisa é só postar
abss
[quote=wagner_a_lima]Tente o seguinte:
public void loadDataModel() {
System.out.println("The value of code atribbute is: " + this.code);
//Codido para montar o datamodel.
}
[/quote]
public void loadDataModel(){
System.out.println("Codigo: " + codigo);
}
Saida: Codigo:
Saida: Setting code: javax.faces.component.html.HtmlSelectOneMenu@578fd6
Em nenhum dos casos consegui pegar o codigo…
Descobri o que acontece, mas não tenho uma solução.
Por estar dentro de um modalPanel, como disse antes, algum BUG não deixa o codigo ser setado. Copiei e colei o codigo fora do modalPanel e funcionou…
Alguem sabe uma solução ou qualquer coisa que possa me ajudar?
Obrigado,
Faça o seguinte, continue com isso:
<h:selectOneMenu value="#{linkResolver.codigo}" id="tipoLink" binding="#{linkResolver.codigo}">
<f:selectItem itemValue="" itemLabel="" />
<f:selectItems value="#{linkResolver.tipos}" />
<a4j:support event="onchange" reRender="linkDataTable"></a4j:support>
</h:selectOneMenu>
e faça:
public void setCodigo(HtmlSelectOneMenu codigo) {
System.out.println("Setting code: " + (String) codigo.getValue());
this.codigo = codigo;
qqr coisa posta de novo, continua do modo que estava, mas tenta assim agora, mudando seu bean dessa forma.
abss
Zabimaru,
Tentei o que você falou, mas o setter precisa ser de String, senão o Faces reclama.
Então Guilherme vc vai fazer o seguinte, para o binding vc vai criar um atributo na bean e para pegar o valor mesmo quando vc der um submit vc vai usar um atributo string, faça o seguinte então:
public void setCodigo(String codigo) {
System.out.println("Setting code: " + codigo);
this.codigo = codigo;
public void setCodigo2(HtmlSelectOneMenu codigo2) {
System.out.println("Setting code: " + (String) codigo2.getValue());
this.codigo2 = codigo2;
<h:selectOneMenu value="#{linkResolver.codigo}" id="tipoLink" binding="#{linkResolver.codigo2}">
<f:selectItem itemValue="" itemLabel="" />
<f:selectItems value="#{linkResolver.tipos}" />
<a4j:support event="onchange" reRender="linkDataTable"></a4j:support>
</h:selectOneMenu>
faça assim,
abss
Cara, se vc precisa fazer submit de dados que estão em um modal panel vc deve fazer o seguinte:
O modal panel deve ter seu proprio form e a declaracao do modal panel deve estar fora de qualquer outro form. Está informação está na documentação do Richfaces.
Exemplo:
<h:form>
form normal da pagina
</h:form>
rich:modalPanel
<h:form>
form do modal panel
</h:form>
rich:modalPanel
Realmente o que o lfpolli falou é verdade. Eu separei os forms, tive que fazer umas outras coisas também, daí funcionou! Pode me passar o link de onde a documentação fala isso? Queria dar uma olhada no que mais ele fala.
O engraçado é que tenho um outro modalPanel que usa AJAX e dentro dele tem uma DataTable com DataScroller e links pra dar um sort na tabela, e lá funciona normalmente. Parece que em alguns casos o RichFaces não conseguiu solucionar esses bugzinhos ^^.
Valeu pessoal.
Segue o link: http://www.jboss.org/file-access/default/members/jbossrichfaces/freezone/docs/devguide/en/html_single/index.html está na seção de componentes, onde fala sobre o modalPanel. O Richfaces Developer Guide é muito útil para quem está desenvolvendo com Richfaces, ele contém muitas dicas e avisos sobre comportamentos mais peculiares de alguns componentes.
No outro modalPanel vc não tem problemas porque, tenho a impressão, que o sort é feito no lado cliente, mas não posso confirmar a informação. De qualquer maneira vc só precisa ter um formulário dentro do modalPanel se vc precisa submeter dados, caso seja somente visualização isso não é necessário.
Eu já tenho essa documentação, só não tinha lido essa parte dos forms ^^
Quanto ao sort, é AJAX mesmo, não roda no cliente pois tem que refazer o select do banco… Mas beleza, problema resolvido
Vlw a todos.
Opa que bom que resolveu,
bem eu não uso um form para modal panel, tanto é que eu crio apenas um form, não fico criando forms para cada página, eu faço o seguinte crio um template e defino um body nesse template, da seguinte forma:
<ui:insert name="body">
</ui:insert>
depois nas página eu só defino o body,
abss
Colocar vários forms em uma única página fica um lixo, fora que no FireFox 11 da alguns problemas, o ideal seria ter um único form por pagina, mas como o rich:modal não da pra trabalhar desta maneira optei utilizando JQuery, bem melhor:
http://code.google.com/p/simplemodal/downloads/list