簡體   English   中英

無法使用jstl將Java Bean的值綁定到JSP

[英]Unable to bind value from java bean to jsp using jstl

我有一個在我的bean中設置的String getter和setter。

我試圖像這樣使用jstl在我的jsp中獲取值:

    <jsp:useBean class="com.test.MyBean" id="results" scope="request"/>


    <script type="text/javascript">
    function setMyFields(){
    var flag="<c:out value='${results.sdateFlag}'/>";
    alert(flag);                
    var text_box = document.getElementById('mySelectedDate');
    if(flag=="true"){
    text_box.setAttribute('disabled', 'disabled');
    }
    }
    window.onload = setMyFields;
    </script>

我已經在我的jsp中導入了jstl核心。

但是當我這樣做時,我得到這樣的錯誤:

    javax.servlet.ServletException: Unable to find a value for "sdateFlag" in object of class "com.test.MyBean" using operator "."
    at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:660)
    at com.ibm._jsp._pageMyAmount._jspService(_pageMyAmount.java:306)
    at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:87)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1101)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:569)
    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
    at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122)
    at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:226)
    at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:321)

但是我一直在使用Java調試器調試Java類,並且似乎正在設置該值。 那為什么沒有得到價值呢?

編輯:這些是我的豆的安裝和獲取:

public void setDateFlag(String  b)          { sDateFlag = b; }
public String isDateFlag()                  { return sDateFlag; }

怎么了 我想念什么嗎?

您將dateFlag視為布爾屬性,但實際上它是String 因此,您的“ getter”應稱為getDateFlag ,而不是isDateFlag 如前所述, isPropertyName語法僅適用於boolean類型的屬性。

另外,實際上並不需要<c:out value='${results.dateFlag}'/> 您應該能夠簡單地執行${results.dateFlag}

因此,我已解決問題,這是一個奇怪的解決方案。 看起來的問題是,任何聲明的變量都必須遵循Java標准。 我的問題是,我在原始專有代碼中給了變量名稱sDateFlag ,它不遵循Java命名約定。 當我刪除它並將其作為flag ,它開始工作。 我使用下面的鏈接JSTL研發了答案。 盡管它不是完全正確的,但它使我找到了問題的根本原因。 我想向所有答復我的人表示感謝,以使這一過程變得容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM