在Struts 2中返回到INPUT结果的当前页面

<s:form>我的Web应用程序的所有页面上都有一个

<s:form action="search" method="post">
    <s:textfield name="query" placeholder="Enter movie title..." cssClass="searchbox" />
    <s:submit type="image" src="images/btn_search.gif" />
</s:form>

目前,它被重定向到index.jspvalidate()的方法SearchAction类结果input

<action name="search" class="com.mypackage.action.SearchAction">
    <result>/search-result.jsp</result>
    <result name="input">/index.jsp</result>
</action>

SearchAction:

public class SearchAction extends ActionSupport implements RequestAware, Message {
    private static final long serialVersionUID = 1L;

    private Map<String, Object> request;

    private String query;

    @Override
    public String execute() throws Exception {
        // business logic
        request.put("searchResults", searchResults);

        return SUCCESS;
    }

    @Override
    public void validate() {
        if(getQuery().length() == 0) {
            addFieldError("query", BLANK_SEARCH);
        }
    }

    @Override
    public void setRequest(Map<String, Object> request) {
        this.request = request;         
    }

    public String getQuery() {
        return query;
    }

    public void setQuery(String query) {
        this.query = query;
    }
}

输出:

在此处输入图片说明

它可以工作,但是对于用户来说,index.jsp每次参数无效(例如,空白)时都返回不自然

我的目标是在出现“请输入...”消息时将用户保持在当前页面上

问题:

  1. 如何获得当前页面,调用该页面的位置?
    (例如,访客在“登录”页面上使用搜索时,如何login.jsp从地址栏中获取信息?)
  2. 如何使当前页面位于该位置
    <result name="input">/currentpage</result>

如果我的问题有任何不清楚的地方,请不要犹豫。

吉加尔·米斯特里

您可以使用以下代码获取当前页面名称:

String actionName = ServletActionContext.getRequest().getHeader("Referer");

在Struts.xml中,使用动态结果,例如:

<result name="input" type="redirect">${url}</result>

在操作中,对URL使用getter方法。默认情况下,将url的值设置为“ index.jsp”。如果要更改它,请为url设置适当的值。像login.jsp等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章