【问题标题】:JSF 2.0 outputText rendered?JSF 2.0 outputText 渲染?
【发布时间】:2012-04-01 13:40:17
【问题描述】:

我是 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>

谁能告诉我我在这里做错了什么?

【问题讨论】:

    标签: jsf-2


    【解决方案1】:

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

    因此,更是如此:

    private boolean personDeactivated;
    
    public boolean isPersonDeactivated() {
        return personDeactivated;
    }
    

    那么你可以参考如下:

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

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

    【讨论】:

    • 感谢您的回答。它工作得很好。谢谢你的提示。但是我还有另一个问题:当我导航到另一个页面并再次返回时,成功消息总是在那里。我怎样才能让它们不可见?提前致谢。
    猜你喜欢
    • 2014-03-26
    • 2011-12-12
    • 2012-01-01
    • 2011-08-22
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 2012-05-29
    • 2023-03-25
    相关资源
    最近更新 更多