Java 无法使用Struts2从操作跳到Jsp

Java 无法使用Struts2从操作跳到Jsp,java,jsp,struts2,Java,Jsp,Struts2,我做了2个动作,动作1的目的是更新一些信息,动作2的目的是检索信息。通常,我使用action2进行搜索,使用JSP进行显示。现在还有一些东西,在看到JSP之后,首先输入action1来修改一些东西,然后转到action2来检索,最后跳到JSP来显示信息。我使用Struts2来实现它。但事实上,信息没有改变,我需要刷新网页,以便它可以正常显示。起初我猜是cache导致了这种情况。因此,我在JSP中添加了一些标记以避免这种情况,并使用?time=${time}重写url,但仍然徒劳。我的代码如下 M

我做了2个动作,动作1的目的是更新一些信息,动作2的目的是检索信息。通常,我使用action2进行搜索,使用JSP进行显示。现在还有一些东西,在看到JSP之后,首先输入action1来修改一些东西,然后转到action2来检索,最后跳到JSP来显示信息。我使用Struts2来实现它。但事实上,信息没有改变,我需要刷新网页,以便它可以正常显示。起初我猜是cache导致了这种情况。因此,我在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?

不确定您的需求。。如果您试图将请求从一个servlet转发到另一个资源servlet JSP文件,那么使用

forward(ServletRequest request, ServletResponse response)

您永远不应该从操作重定向到JSP。下面的代码是重定向结果类型,它从上一个操作中丢失了任何请求属性和valueStack,因此jsp视图变得没有模型。为新请求创建新的操作上下文,这是重定向到jsp的结果

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

例如,我登录我的网站,我必须通过action2获取信息并将其带到Jsp,这样我才能看到信息。现在,在我看到我想要更新一些信息之后,在Jsp中有一个更新函数。但是,当我在MySQL中更新时,Jsp不会刷新,url也不会更改,尽管我用?time=${time}重写了它。在调用Jsp之前,用操作中更新的值更新表单bean。为什么要在struts.xml中混合注释和操作?什么是messageBo.updateMessageByFieldid、field、value;做什么?发布您的jsp。
<action name="getMessage" class="com.ailonger.action.MessageAction" method="getMessage">  
    <result>/room/my_message.jsp?time=${time}</result>  
</action>