2013-05-13 54 views
0

我有一個String getter和setter,我在我的bean中設置。無法使用jstl將值從java bean綁定到jsp

我想使用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) 

但IHAVE一直使用Java調試調試Java類,它似乎價值是越來越設置。那爲什麼它沒有獲得價值?

編輯:這些都是我的bean的setter和getter:

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

這裏有什麼錯?我錯過了什麼嗎?

+0

請將您'MyBean'類 – NilsH 2013-05-13 12:26:12

+0

的代碼你爲什麼不使用一個簡單的EL代替useBean的? – NINCOMPOOP 2013-05-13 12:26:45

+0

@NilsH:好吧,我要添加我的Bean代碼。 – 2013-05-13 12:34:04

回答

0

所以,我得到了固定的問題,這是一個奇怪的解決方案。看起來這個問題是,聲明的任何變量都必須遵循java標準。而我的問題是,我在我的原始專有代碼中給出了變量名sDateFlag,它不遵循java命名約定。當我刪除它,並給它作爲flag,它開始工作。我R &使用此鏈接D ed答案:JSTL。雖然這不完全正確,但卻導致了我的問題的根源。我想向所有回覆我的人們表示感謝,讓這個過程變得簡單。

1

你治療dateFlag作爲一個布爾值屬性,但它實際上是一個String。所以你「吸氣」應該叫getDateFlag,而不是isDateFlag。如上所述,isPropertyName語法僅適用於boolean類型的屬性。

而且,是不是真的需要<c:out value='${results.dateFlag}'/>。你應該可以簡單地做${results.dateFlag}

+0

好的,讓我試試這個。我會盡快回復您 。 – 2013-05-13 12:38:51

+0

不,它不工作,我得到相同的錯誤。沒有看到一個方法名稱會如此痛苦。它必須是別的東西。 – 2013-05-13 12:45:37

+0

這就是JavaBean命名約定。如果仍然出現錯誤,可能還沒有重新編譯和/或重新部署。 – NilsH 2013-05-13 12:55:43