jsf menuitem没有设置属性

时间:2013-07-02 19:02:48

标签: jsf properties set menuitem

我尝试按菜单项设置普通属性,但它不起作用。

JSF:

<p:menuitem value="Names" 
            url="/master.xhtml"
        action="#{navigation.name}">

       <f:setPropertyActionListener target="navigation.name"
      value="Billy" />
</p:menuitem>

ManagedBean:

@ManagedBean(name="navigation") 
@SessionScoped //
public class LinksNavigation {

    public LinksNavigation() {
        super();
        this.milchFleisch = "./menuFleisch.xhtml";
    }

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name= name;
    }

}

但它不起作用。我没有设置“f:setPropertyActionListener” value =“欺负”。如何通过menuItem设置属性值

由于

1 个答案:

答案 0 :(得分:0)

setPropertyActionListener中,您有String而不是EL表达式。变化

target="navigation.name"

target="#{navigation.name}"

另外,您需要仔细查看p:menuitem action。属性MethodNotFoundException期待一个方法表达式。您将获得action="#{navigation.name}" 代码的设置方式。你需要改变

action="#{navigation.getName}"

#{navigation.name}

缩写语法url用于值表达式

您正在混合导航方法。对于相同的action,您不能将p:menuItemaction属性放在一起。当我测试您的代码时,setPropertyActionListenerurlurl="/master.xhtml"出现时从未被调用过。此行为表明您必须选择其中一个。

<强> COMMENT

根据您的样本,我认为您应该重新考虑您的方法。让我们假装你决定不使用#{navigation.name}并让我们回顾一系列事件。按下菜单项后,setPropertyActionListener中的name表达式将首先将值“Billy”设置为navigation.setName("Billy")属性(例如#{navigation.getName})。然后,属性action中的表达式getName()将调用String。现在,操作将具有Billy.xhtml值“Billy”,它将尝试导航到faces-config(假设faces-config中没有导航规则,并且您拥有JSF 2.0)。如果这是您正在追求的行为,或者您在{{1}}中设置了规则,并且您没有完全根据另一个故事对该值进行硬编码。请记住这一点。