jsp通过点表示法访问类的嵌套属性

时间:2012-02-22 16:28:11

标签: java jsp

我有两个课程,下面有两个页面:

我的问题是如何从HelloView访问HelloModel的属性以使它们显示在helloName.jsp中。点符号对我来说不起作用,我不确定这是否需要自定义标记来执行此类工作。我最近做了相当数量的冰面并认为它会是相似的。从某种意义上来说它无法找到属性hm.name

class HelloView  
{  
    private HelloModel hm;
    public String getAttribute()  
    {  
       return hm.getName();  
    }

    //getters / setters
}  


class HelloModel  
{  
   private String name;  
   //getters / setters
}    

hello.jsp  
<form action="helloName.jsp" method="post" name="form">
        Hello enter your name!

        <input type="text" name="name">
        <input type="submit" name="submit" value="Submit" >  

helloName.jsp  
<body>

        <jsp:useBean id="hello" class="HelloView" scope="page">
         <jsp:setProperty property="hm.name" name="hello"/>
        </jsp:useBean>
        Thank you <%=hello.getHelloModel()%> 
</body>

1 个答案:

答案 0 :(得分:1)

您需要两个<jsp:useBean>

根据目前给出的信息和代码,看起来像这样:

<jsp:useBean id="hm" class="HelloModel" scope="page">
    <jsp:setProperty name="hm" property="name" />
</jsp:useBean>
<jsp:useBean id="hello" class="HelloView" scope="page">
    <jsp:setProperty name="hello" property="hm" value="${hm}" />
</jsp:useBean>

第一个创建HelloModel并将请求参数name设置为它的属性(它应该有public void setName(String name)方法)。第二个创建HelloView并将HelloModel设置为hm属性(它应该有public void setHm(HelloModel hm)方法)。


对于具体问题,

无关<jsp:useBean>遵循与普通JSF和JSP / Servlet不同的MVC方法。建议使用它。此外,类应位于包内,否则在大多数服务器上都会失败(无包装类仅适用于某些Tomcat + JDK组合)。