JSF 2.0 outputText呈现?

时间:2012-03-16 00:08:13

标签: jsf-2

我是JSF的新手,我想在成功执行操作时花费一些文本。但输出文本,并不是在动作成功执行时。

这是视图(deactivatePerson.xhtml):

<h:outputText value="#{msg.personIsDeactivate}" rendered="#{isPersonDeactivate}" />
<h:form>
    <h:commandButton action="#{controller.deactivate}" value="#{msg.deactivate}" />
</h:form>

这是托管bean:

@ManagedBean
@SessionScoped
public class Controller { 
    private boolean isPersonDeactivate = false;

    public String deactivate() {
        isPersonDeactivate = false; // Deactivate process...
        isPersonDeactivate = true;
        return "persondeactivate";
    }

    //Getter and Setter
}

以下是faces-config.xml

<navigation-rule>
    <navigation-case>
        <from-outcome>persondeactivate</from-outcome>
        <to-view-id>/deactivatePerson.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

有人可以告诉我这里的错误吗?

1 个答案:

答案 0 :(得分:2)

您忘记将其引用为#{controller}托管bean的属性。目前还不清楚你的getter是什么样的,但是布尔属性应该有一个以is为前缀而不是get的getter。属性名称本身最好不要有is前缀。它应该是一个动词陈述。

因此,更是如此:

private boolean personDeactivated;

public boolean isPersonDeactivated() {
    return personDeactivated;
}

然后你可以按如下方式引用它:

<h:outputText ... rendered="#{controller.personDeactivated}" />

对于具体问题,

无关,导航案例因为新的JSF 2.0隐式导航而变得多余。只需让您的操作方法返回"deactivatePerson",它就会转到正确的视图,而不需要<navigation-case>。确保您正在阅读正确的JSF 2.x目标资源,而不是JSF 1.x目标资源。