Struts 2 文本字段即使没有 value 属性也会显示值

问题描述 投票:0回答:3

我有一个 Struts 2

<s:textfield>
标签,我只需要让用户输入一个值并将其发送到操作。

<s:textfield name="user.firstAnswer" size="110" cssClass="FormObjectCompulsary" autocomplete="off" />

即使加载此页面,用户对象也包含第一个答案的值。我不想将其显示在文本字段中。相反,我希望文本字段为空。

但是没有指定 value 属性,用户对象中的值仍然显示在该字段中。

java jsp struts2 ognl valuestack
3个回答
1
投票

如果要添加新对象

user
,那么您应该在 JSP 中显示它之前使用
new
运算符创建该对象。它将包含未显示的
null
引用。如果未指定
value
属性,则使用
name
显示值。


0
投票

execute()
内后将用户对象设置为空。所以它再次不会在文本框中显示值。

例如。

user = null;

我正在向您展示一段代码,也许会对您有所帮助。 请参阅

execute()

package online.solution;

import com.opensymphony.xwork2.Action;

public class MyAction implements Action {

    UserBean user = new UserBean();

    public UserBean getUser() {
        return user;
    }

    public void setUser(UserBean user) {
        this.user = user;
    }

    @SuppressWarnings("finally")
    @Override
    public String execute() throws Exception {
        String result = "";
        try {
            user.setGuest("Bye bye");
            System.out.println(user.getUsername() + " " + user.getPassword());

            if (user.getUsername().equals(user.getPassword())) {
                result = SUCCESS;
            }
            else {
                result = ERROR;
            }
            user = null; //Make it null when all task completed.
        }
        catch (Exception exception) {
            System.out.println("Exception -> " + exception);
        }
        finally {
            return result;
        }
    }

    @Override
    protected void finalize() throws Throwable {
        super.finalize();
    }
}

0
投票

通过查看

name="user.firstAnswer"
我认为您正在将 ModelDriven<> 实现到您的操作类中。可能发生的情况是,当您在操作类中返回成功并进入 jsp 页面时,如果在操作中您的用户模型有一些值..模型驱动将在您的 JSP 页面上为您设置这些字段。

我在学习 struts2 时使用了这种方法来更新表单功能。只需确保用户对象在返回之前不包含任何内容...

© www.soinside.com 2019 - 2024. All rights reserved.