我有一个我在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类,似乎值已经设置好了。那么为什么它没有得到价值呢?
编辑:这些是我的bean的setter和getter:
public void setDateFlag(String b) { sDateFlag = b; }
public String isDateFlag() { return sDateFlag; }
这里有什么问题?我错过了什么吗?
答案 0 :(得分:1)
您将dateFlag
视为布尔属性,但实际上是String
。因此,您应该将“getter”称为getDateFlag
,而不是isDateFlag
。如上所述,isPropertyName
语法仅适用于boolean
类型的属性。
此外,并不真正需要<c:out value='${results.dateFlag}'/>
。您应该只需${results.dateFlag}
。
答案 1 :(得分:0)
所以,我解决了问题,这是一个奇怪的解决方案。似乎问题是,声明的任何变量必须遵循java标准。我的问题是,我在我的原始专有代码中给出了变量名称sDateFlag
,该代码不遵循java命名约定。当我删除它并将其作为flag
给出时,它开始工作。我在这里使用此链接来解答答案:JSTL。虽然它不完全正确,但它引导我解决问题的根本原因。我要感谢所有回复我的人,让这个过程变得简单。