2014-11-21 50 views
1

我想在Netbeans中製作一個簡單的MySQL,Java JDBC Web應用程序。 我希望根據當前會話中的狀態變量顯示不同的內容。我曾嘗試以下方法:<c: choose> jsp中的條件執行所有條件

首先我有一個.JSP頁面下面的代碼:

<c:choose> 
    <c:when test="${sessionScope.Staff.getStatus() == staff.default_staff_status}">Default staff</c:when> 
    <c:when test="${sessionScope.Staff.getStatus() == staff.financial_staff_status}">Financial staff</c:when> 
    <c:when test="${sessionScope.Staff.getStatus() == staff.legal_staff_status}">Legal staff</c:when> 
    <c:otherwise>Secretarial staff</c:otherwise> 
</c:choose> 

其次我有一個.JSP頁面下面的代碼:

<c:if test = "${sessionScope.Staff.getStatus() == Staff.default_staff_status}" > 
    Default staff 
</c:if> 
<c:if test = "${sessionScope.Staff.getStatus() == Staff.financial_staff_status}" > 
    Financial staff 
</c:if> 
<c:if test = "${sessionScope.Staff.getStatus() == Staff.legal_staff_status}" > 
    Legal staff 
</c:if> 
<c:if test = "${sessionScope.Staff.getStatus() == Staff.secretarial_staff_status}" > 
    Secretarial staff 
</c:if> 

sessionScope.Staff給對象StaffData定義爲:

public class StaffData 
{ 
    protected final byte default_staff_status = 0; 
    protected final byte financial_staff_status = 1; 
    protected final byte legal_staff_status = 2; 
    protected final byte secretarial_staff_status = 3; 

    private byte status; 
    //Other data 

    StaffData() 
    { 
     //Constructor 
    } 

    //Other methods 

    public byte getStatus() 
    { 
     return this.status; 
    } 

    public byte getDefault_staff_status() 
    { 
     return this.default_staff_status; 
    } 

    public byte getFinancial_staff_status() 
    { 
     return this.financial_staff_status; 
    } 

    public byte getLegal_staff_status() 
    { 
     return this.legal_staff_status; 
    } 

    public byte getSecretarial_staff_status() 
    { 
     return this.secretarial_staff_status; 
    } 
} 

通過這兩種方法,我的輸出是:

Default staff Financial staff Legal staff Secretarial staff 

但是,只有其中一個應該已經打印。所有的getter函數都是公共的,並且已經正確定義。爲什麼我看到所有正在打印的行?

相關較早前的問題:JSP-EL session variable access error: javax.el.PropertyNotFoundException despite said property being public

+1

任何錯誤似乎還沒有應用其中提供的解決方案。 – 2014-11-21 23:12:39

+0

我確實放入了測試屬性。我沒有將sessionScope.Staff.getStatus()更改爲Staff.status,因爲我想明確說明我正在使用會話變量。我還爲Financial_staff_status添加了getter方法。然而,這是如何解釋我得到的輸出? – TSG 2014-11-22 00:27:55

回答

2

我想通了,我的錯誤。 我忘了包括:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 

不知道爲什麼,我沒有得到這個