我有两个课程,下面有两个页面:
我的问题是如何从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>
答案 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组合)。