2012-03-16 104 views
0

我是JSF的新手,我想在操作成功执行时花费文本。但是输出文本,这不是行为成功执行的时候。JSF 2.0 outputText呈现?

这里是视图(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> 

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

回答

2

您忘记将其作为#{controller}托管bean的属性进行引用。目前还不清楚你的吸气器是什么样的,但布尔属性应该有一个以is为前缀的吸气剂,而不是get。属性名称本身最好不要有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目标资源。

+0

谢谢你的回答。它运行良好。谢谢你的提示。然而,我还有一个问题:当我导航到另一个页面并再次回来时,成功消息总是在那里。我怎样才能让他们看不见?提前致谢。 – Lukem 2012-03-16 09:17:09