[英]How to make form display data from underlying bean in struts2?
我想將來自Java bean的數據顯示在jsp頁面的struts <s:form>
上。 這樣用戶可以看到存儲在數據庫中的內容並可以進行編輯。
因此,這是我的User 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加載相應的User對象,並將其分配給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>
謝謝!
要顯示從db User對象加載的數據,我必須在我的動作類中使用ModelDriven
接口,並在我的jsp頁面中使用<s:push>
標記。
所以,我的UserAction類沒有改變,但是jsp頁面卻<s:push>
:
<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:push>
</s:form>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.