1

我在我的 bean 中设置了一个字符串 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 类,似乎值正在设置。那为什么它没有得到价值呢?

编辑:这些是我的 bean 的 setter 和 getter:

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

这里有什么问题?我错过了什么吗?

4

2 回答 2

1

您将dateFlag视为布尔属性,但实际上它是String. 所以你的“getter”应该被称为getDateFlag,而不是isDateFlag。如前所述,isPropertyName语法仅适用于 type 的属性boolean

另外,<c:out value='${results.dateFlag}'/>其实也不需要。你应该能够简单地做${results.dateFlag}.

于 2013-05-13T12:37:56.810 回答
0

所以,我解决了这个问题,这是一个奇怪的解决方案。问题似乎是,声明的任何变量都必须遵循 java 标准。我的问题是,我sDateFlag在我的原始专有代码中给出了变量名,它不遵循 java 命名约定。当我将其删除并将其作为flag时,它开始工作。我在这里使用此链接研发了答案:JSTL。尽管它不完全正确,但它使我找到了问题的根本原因。我想向所有回复我的人表示感谢,以使这个过程变得容易。

于 2013-05-14T10:07:22.773 回答