簡體   English   中英

使用Struts2無法從動作跳至Jsp

[英]Cannot skip from an action to a Jsp with Struts2

我進行了2次操作,action1旨在更新一些信息,action2則是對其進行檢索。 通常,我使用action2進行搜索,並使用JSP進行顯示。 現在有了更多東西,看到JSP之后,首先輸入action1進行修改,然后轉到action2進行檢索,最后跳到Jsp以顯示信息。 我使用Struts2來實現。 但是實際上信息並沒有改變,我需要刷新網頁以便可以正常顯示。 起初我想是導致這種情況的原因是緩存。 因此,我在JSP中添加了一些標簽來避免這種情況,並使用?time = $ {time}重寫了url,但仍然徒勞。 我的代碼如下。

MessageAction.java:

    public String getMessage() throws Exception{
        Map<String, Object> session = ActionContext.getContext().getSession();      
        Account account = (Account)(session.get("account"));
        List<Message> messages = messageBo.getMessageByAccount(account);
        session.remove("messages");
        session.put("messages", messages);
        time = Long.toHexString(new Date().getTime());
        System.out.println(time);
        return SUCCESS;

    }

    @Action(value="modifyMessage",
            results={
            @Result(name="success",location="/getMessage.action",type="redirectAction")})
    public String modifyMessage() throws Exception{ 
        HttpServletRequest request = ServletActionContext.getRequest();             
        String field = request.getParameter("field");
        String value = request.getParameter("value");
        Integer id = Integer.parseInt(request.getParameter("id"));      
        messageBo.updateMessageByField(id, field, value);
        return SUCCESS;
    }

struts.xml:

    <action name="getMessage" class="com.ailonger.action.MessageAction" method="getMessage">  
        <result type="redirect">/room/my_message.jsp?time=${time}</result>  
    </action>

進入action2后如何直接跳到JSP?

您永遠不要從該操作重定向到JSP。 下面的代碼是redirect結果類型,該結果類型從上一個操作中valueStack了所有請求屬性和valueStack ,因此jsp視圖變得沒有模型。 為新請求創建了新的動作上下文,這是重定向到jsp的結果。

<action name="getMessage" class="com.ailonger.action.MessageAction" method="getMessage">  
    <result type="redirect">/room/my_message.jsp?time=${time}</result>  
</action>

該代碼應更改為使用默認的dispatcher結果類型,並且可以在xml配置中省略。

<action name="getMessage" class="com.ailonger.action.MessageAction" method="getMessage">  
    <result>/room/my_message.jsp?time=${time}</result>  
</action>

不確定您的要求。如果嘗試將請求從servlet轉發到另一個資源(servlet,JSP文件),請使用

forward(ServletRequest request, ServletResponse response)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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