2012-03-16 137 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