java - JSTL - 无法访问存储为 session 变量的对象的属性

标签 java tomcat jstl

我遵循标准的 MVC 架构。 在我的 Controller 中,我有以下代码,

userDetailsBean = userDetailsDAO.getUserDetailsFromEmail(loginEmail);
session.setAttribute("userDetails", userDetailsBean);

对象 userDetailsBean 包含不同的方法,如 getFName()getLName() 等。我从 View 文件访问这个对象如下,

<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}

但都没有用,

我将 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()%>

关于java - JSTL - 无法访问存储为 session 变量的对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35713320/

相关文章:

java - 使用 XML 进行改造 - 元素在类中没有匹配项

java - jvisualvm 去哪儿了?

Tomcat 服务器响应此 URL 的 400 错误请求

java - 在 Java EE 应用程序中显示错误消息时出现意外结果(字段为空时不会出现错误)

java - Android DatagramChannel.register() block 执行

java - 为什么可以将 JFrame 强制转换为 JPanel?

java - 为什么我的 jSTL <c :if test ="(should be true)"> returning even the false items?

jsp - JSTL/EL 中数字的上限

java - 在 Tomcat 7 中部署的 war 在 Linux 上的行为与在 Windows 上的行为不同

java - 重新部署我的应用程序时出现 OutOfMemoryError