簡體   English   中英

如何使表格顯示來自struts2中底層bean的數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM