Jsf

13 respostas
O

Olá =).

No trecho de código

<h:selectOneMenu styleClass=“textotabela” id=“nat”
value="#{USuMBean.natureza}"
immediate=“true” required=“true”>
<f:selectItems value="#{USuMBean.listaNatureza}" /> #
</h:selectOneMenu>

A linha (#) está com o seguinte erro:
According to the TLD, deferred-value is specified for the attribute value of the tag handler com.sun.faces.taglib.jsf_core.SelectItemsTag, but the argument for the setter method is not a javax.el.ValueExpression

Não estou conseguindo identificar qual é o erro. Alguém sabe como resolver?

13 Respostas

andredemelo

Utilize a Tag [cod][/dod] para facilitar o entendimento do código!!!

andredemelo

Assim é bem melhor…

Trecho código:

<h:selectOneMenu styleClass="textotabela" id="nat" value="#{USuMBean.natureza}" immediate="true" required="true"> <f:selectItems value="#{USuMBean.listaNatureza}" /> # </h:selectOneMenu>

Erro:

According to the TLD, deferred-value is specified for the attribute value of the tag handler com.sun.faces.taglib.jsf_core.SelectItemsTag, but the argument for the setter method is not a javax.el.ValueExpression
O

Obrigada por ter apresentado a minha pergunta de forma mais adequada, André =)

H

Na lista de selectItems listaNatureza você está setando o atributo value com que valor?

O

Pelo que entendi da sua pergunta, listaNatureza é um arrayList de Naturezas, sendo que Natureza são Strings.

dev.rafael

Posta ai o código do USuMBean tb. E se possível o faces-config.xml, se vc estiver usando é claro.

O

dev.rafael, o código do é USuMBean realmente grande. Sim, estou usando o faces-config.xml.

faces-config.xml

<?xml version="1.0" encoding="windows-1252"?>
<!DOCTYPE faces-config PUBLIC
  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
  "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config xmlns="http://java.sun.com/JSF/Configuration">
  <managed-bean>
    <managed-bean-name>AdminMBean</managed-bean-name>
    <managed-bean-class>MBean.Admin</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>
  <managed-bean>
    <managed-bean-name>USuMBean</managed-bean-name>
    <managed-bean-class>MBean.Usuario</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>
  
   <navigation-rule>
    <navigation-case>
      <from-outcome>admin</from-outcome>
      <to-view-id>/admin.jsp</to-view-id>
    </navigation-case>
    
  </navigation-rule>
</faces-config>

Muito Obrigada pelo interesse em resolver meu problema =).

dev.rafael

Mesmo assim seria melhor q vc o postasse aqui. Se for tão grande assim poste pelo menos o código do método “getListaNatureza”.

O

Postando os códigos, tomara que isso ajude a entender o que está acontecendo =)

public Usuario() {
        Iterator it = this.buscarNaturezas().iterator();
        while( it.hasNext() ) {
            String valor = (String)it.next();
            listaNatureza.add( new SelectItem(valor,valor));
        }
        
        listaSis.add( new SelectItem("xx","wwwwww"));
        listaSis.add( new SelectItem("xx","mmmmmmm"));
        listaSis.add( new SelectItem("yy","bbbbbbb"));
        listaSis.add( new SelectItem("yy","zzzzzzzzzzzzz"));
        listaSis.add( new SelectItem("aa","ccccccccccccccccc"));
        listaSis.add( new SelectItem("ee","uuuuuuuuuuuuuu"));
        
        email = this.getUsuario().getEmail();
        emailGerente = this.getUsuario().getGerente().getEmail();
        
        try
        {
            this.setSolicitacoesProprias( this.buscarUltimasSolicitacoesUsuario());
          
        }
        catch(Exception e) {
              e.printStackTrace();
              setErroMsg(e.getMessage()); 
        }        
        
    }
public static Collection buscarNaturezas()
    {
       LinkedList list = new LinkedList();
        list.add("hjk");
        list.add("nkd");
        list.add("hjk");
 return list;
    }
public void setNatureza(String natureza) {
        this.natureza = natureza;
    }

    public String getNatureza() {
        return natureza;
    }

    public void setListaNatureza(List listaNatureza) {
        this.listaNatureza = listaNatureza;
    }

    public List getListaNatureza() {
        return listaNatureza;
    }
dev.rafael

option, qual servidor vc está usando? Vc já tentou usar JSF2 ao invés do 1.1?

O

Estou usando o JBoss 4.0.4 GA

Não, dev.rafael, ainda não tentei usar o JSF2. É compatível com a versão do JBoss que estou usando? Pelo que pesquisei, o JBoss 4.0.4 não suporta algumas coisas =/

dev.rafael

Isso mais parece ser um bug. A mensagem de erro q vc postou…

According to the TLD, deferred-value is specified for the attribute value of the tag handler com.sun.faces.taglib.jsf_core.SelectItemsTag, but the argument for the setter method is not a javax.el.ValueExpression

… diz q na taglib o atributo value está marcado como do tipo javax.el.ValueExpression (deferred-value) mas o método setValue na classe SelectItemsTag não recebe um parâmetro desse tipo. Para confirmar isso, tente rodar esse mesmo código em algum outro servidor JEE como o Glassfish.

O

Muito obrigada, dev.rafael.

Vou testar aqui =)

Criado 5 de outubro de 2010
Ultima resposta 6 de out. de 2010
Respostas 13
Participantes 4