JSTL - 无法访问存储为会话变量的对象的 属性
JSTL - Unable to access property of the object stored as session variable
我遵循标准的 MVC 架构。
在我的控制器中,我有以下代码,
userDetailsBean = userDetailsDAO.getUserDetailsFromEmail(loginEmail);
session.setAttribute("userDetails", userDetailsBean);
对象 userDetailsBean
包含不同的方法,如 getFName()
、getLName()
等。我按如下方式从视图文件访问此对象,
<c:choose>
<c:when test="${sessionScope.userDetails != null}">
<li>
<a href="#userName">
${sessionScope.userDetails.getFName()}
</a>
</li>
</c:when>
<c:otherwise>
<li>
<a href="#login">Log in/Register</a>
</li>
</c:otherwise>
</c:choose>
我从上面的代码中得到以下错误,
HTTP Status 500 - /header.jsp(22,38) The function getFName must be used with a prefix when a default namespace is not specified
我在互联网上搜索了很多,并尝试了很多不同的建议,例如,
${sessionScope.userDetails.fName}
${sessionScope.userDetails.get(0).fName}
但是 none 有效,
我将 Tomacat 6 与 JSTL 1.2 和 Netbeans 一起使用 IDE。
感谢任何帮助,提前致谢!
您可以阅读 JavaBean 规范。有关它的链接,请查看 Where is the JavaBean property naming convention defined?
中的答案
请参阅第 8.3 和 8.8 节。
你应该让你的生活更轻松,并为你的领域使用常规名称。但是,如果您选择不这样做,请考虑以下 bean。
package test;
public class BeanTest implements java.io.Serializable {
private String bHours = "ten";
private String RICK = "me";
private String Joe = "hello";
public BeanTest(){
}
public void setbHours(String bHours){
this.bHours = bHours;
}
public String getbHours(){
return bHours;
}
public void setRICK(String str){
RICK = str;
}
public String getRICK(){
return RICK;
}
public void setJoe(String str){
Joe = str;
}
public String getJoe(){
return Joe;
}
}
在 JSP 中,您可以使用以下内容访问 bean 中的数据。
<jsp:useBean id="myBean" class="test.BeanTest" />
${myBean.RICK}
${myBean.joe}
${myBean.bHours}
<%=myBean.getbHours()%>
我遵循标准的 MVC 架构。 在我的控制器中,我有以下代码,
userDetailsBean = userDetailsDAO.getUserDetailsFromEmail(loginEmail);
session.setAttribute("userDetails", userDetailsBean);
对象 userDetailsBean
包含不同的方法,如 getFName()
、getLName()
等。我按如下方式从视图文件访问此对象,
<c:choose>
<c:when test="${sessionScope.userDetails != null}">
<li>
<a href="#userName">
${sessionScope.userDetails.getFName()}
</a>
</li>
</c:when>
<c:otherwise>
<li>
<a href="#login">Log in/Register</a>
</li>
</c:otherwise>
</c:choose>
我从上面的代码中得到以下错误,
HTTP Status 500 - /header.jsp(22,38) The function getFName must be used with a prefix when a default namespace is not specified
我在互联网上搜索了很多,并尝试了很多不同的建议,例如,
${sessionScope.userDetails.fName}
${sessionScope.userDetails.get(0).fName}
但是 none 有效,
我将 Tomacat 6 与 JSTL 1.2 和 Netbeans 一起使用 IDE。
感谢任何帮助,提前致谢!
您可以阅读 JavaBean 规范。有关它的链接,请查看 Where is the JavaBean property naming convention defined?
中的答案
请参阅第 8.3 和 8.8 节。
你应该让你的生活更轻松,并为你的领域使用常规名称。但是,如果您选择不这样做,请考虑以下 bean。
package test;
public class BeanTest implements java.io.Serializable {
private String bHours = "ten";
private String RICK = "me";
private String Joe = "hello";
public BeanTest(){
}
public void setbHours(String bHours){
this.bHours = bHours;
}
public String getbHours(){
return bHours;
}
public void setRICK(String str){
RICK = str;
}
public String getRICK(){
return RICK;
}
public void setJoe(String str){
Joe = str;
}
public String getJoe(){
return Joe;
}
}
在 JSP 中,您可以使用以下内容访问 bean 中的数据。
<jsp:useBean id="myBean" class="test.BeanTest" />
${myBean.RICK}
${myBean.joe}
${myBean.bHours}
<%=myBean.getbHours()%>