java如何在struts2中从底层bean生成表单显示数据?
我希望来自JavaBean的数据显示在jsp页面的struts <s:form>
上。这样用户就可以查看数据库中存储的内容,并进行编辑
下面是我的用户bean操作类
public class UserAction extends ActionSupport implements ModelDriven<User> {
@Valid
private User user = new User();
@Override
public User getModel() {
return user;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
下面是我的jsp页面,在加载页面时应该显示用户的属性:
<s:form action="createEditUser" method="post">
<s:push value="user" />
<s:textfield key="name" />
<s:radio list="{'Male','Female'}" key="gender" />
<s:select list="{'USA','Ukraine','Urugvay','Uganda'}" key="country" />
<s:textarea cols="20" rows="10" key="aboutYou" />
<s:checkbox key="mailingList" />
<s:submit key="submit" />
</s:form>
当用户单击链接访问此表单时,相应的用户对象将从db加载并分配给UserAction.user
变量
但上面的表单不显示用户名、性别等属性。用户对象填充了数据,但表单没有。
我以为<s:push value='user' />
会帮我,但没有
你不知道怎么了吗
编辑。下面是从数据库中获取用户的代码:
public String getUserById() {
HttpServletRequest servletrequest = (HttpServletRequest) ActionContext.getContext().get(
ServletActionContext.HTTP_REQUEST);
try {
user = userDao.read(Long.parseLong(servletrequest.getParameter("userId")));
newUser = false;
System.out.println("method getUserById()=" + user);
} catch (HibernateException | NumberFormatException e) {
e.printStackTrace();
return INPUT;
}
return SUCCESS;
}
已成功获取用户。它是印刷的
User user = new User();
用于创建新用户并将其保存到数据库中
我的拦截器在struts中。xml:
<interceptors>
<interceptor-stack name="strutscrudStack">
<interceptor-ref name="defaultStackHibernate">
<param name="exception.logEnabled">true</param>
<param name="exception.logLevel">DEBUG</param>
<param name="params.excludeParams">^struts\..*</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="strutscrudStack"/>
这是一个调用getUserById()
的操作:
<action name="gotoEditUser" class="com.strutscrud.action.UserAction" method="getUserById">
<result name="success">/createUpdateUser.jsp</result>
<result name="input">/allUsers.jsp</result>
</action>
谢谢!
# 1 楼答案
为了显示从db用户对象加载的数据,我必须在action类中使用
ModelDriven
接口,在jsp页面中使用<s:push>
标记所以,我的UserAction类没有改变,但jsp页面得到了
<s:push>
: