Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用jstl将java bean中的值绑定到jsp_Java_Javascript_Jsp_Jstl_Runtime Error - Fatal编程技术网

无法使用jstl将java bean中的值绑定到jsp

无法使用jstl将java bean中的值绑定到jsp,java,javascript,jsp,jstl,runtime-error,Java,Javascript,Jsp,Jstl,Runtime Error,我在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.sdateF

我在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>
    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; }

这里怎么了?我错过什么了吗

您将
dateFlag
视为一个布尔属性,但实际上它是一个
字符串。因此,“getter”应该被称为
getDateFlag
,而不是
isDateFlag
。如前所述,
isPropertyName
语法仅适用于
boolean
类型的属性


另外,
也不是真正需要的。您应该能够简单地执行
${results.dateFlag}

您将
dateFlag
视为一个布尔属性,但实际上它是一个
字符串。因此,“getter”应该被称为
getDateFlag
,而不是
isDateFlag
。如前所述,
isPropertyName
语法仅适用于
boolean
类型的属性



另外,
也不是真正需要的。您应该能够简单地执行
${results.dateFlag}

所以,我解决了这个问题,这是一个奇怪的解决方案。问题似乎是,声明的任何变量都必须遵循java标准。我的问题是,在我的原始专有代码中,我将变量名命名为
sDateFlag
,这不符合java命名约定。当我将其移除并将其作为
标志
时,它开始工作。我使用此处的链接研发了答案:。虽然这并不完全正确,但它让我找到了问题的根本原因。我要向所有回复我的人表达我的感谢,他们让这个过程变得简单。

所以,我解决了这个问题,这是一个奇怪的解决方案。问题似乎是,声明的任何变量都必须遵循java标准。我的问题是,在我的原始专有代码中,我将变量名命名为
sDateFlag
,这不符合java命名约定。当我将其移除并将其作为
标志
时,它开始工作。我使用此处的链接研发了答案:。虽然这并不完全正确,但它让我找到了问题的根本原因。我想向所有回复我的人表达我的谢意,他们让这个过程变得简单。

请添加
MyBean
classes的代码为什么不使用简单的EL而不是useBean?@NilsH:好的,我将添加MyBean代码。@NoobUnChained:我在这里如何使用EL?请给出一些示例指针。发布bean代码,我希望您使用EL,因为它应该比useBean更好!!!请添加您的
MyBean
classes的代码为什么不使用简单的EL而不是useBean?@NilsH:好的,我将添加MyBean代码。@NoobUnChained:我在这里如何使用EL?请给出一些示例指针。发布bean代码,我希望您使用EL,因为它应该比useBean更好!!!好的,让我试试这个。我会再打给你的。不,它不起作用,我得到了同样的错误。我不明白一个方法名怎么会如此痛苦。它一定是另外一种东西。JavaBean命名约定就是这样的。如果您仍然收到错误,则可能没有重新编译和/或重新回复某些内容。因此,我已经遵守并重新编译了好几次。还是没用,摆脱了c:出局,还是没有运气。最后我做了这个:var flag='';但是问题是,它仍然遵循scriplet编码,这可能会导致XSS问题。无论@NilsH提到什么,都应该为您完成这项工作,如果没有,那么您需要为我们发布整个bean代码!!!好的,让我试试这个。我会再打给你的。不,它不起作用,我得到了同样的错误。我不明白一个方法名怎么会如此痛苦。它一定是另外一种东西。JavaBean命名约定就是这样的。如果您仍然收到错误,则可能没有重新编译和/或重新回复某些内容。因此,我已经遵守并重新编译了好几次。还是没用,摆脱了c:出局,还是没有运气。最后我做了这个:var flag='';但是问题是,它仍然遵循scriplet编码,这可能会导致XSS问题。无论@NilsH提到什么,都应该为您完成这项工作,如果没有,那么您需要为我们发布整个bean代码!!!