java - 如何使用重定向使方法返回 null

标签 java redirect jsf-2

在 jsf 中,我想返回到同一页面,但需要重定向。因此,如果用户单击刷新,我不希望再次提交表单。

public String changeLanguage() {
    if (locale == Locale.ENGLISH)
        locale = new Locale("ar");
    else
        locale = Locale.ENGLISH;
    return null;
}

查看代码:- mybean session 范围

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui"
    xmlns:m="http://medicalgate.com/facelets" xmlns:h="http://java.sun.com/jsf/html">

<h:head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>#{msg.hello}</title>
</h:head>
<h:body>
    <f:view locale="#{mybean.locale}">
        <h:form>
            <h:commandLink value="lang" action="#{mybean.changeLanguage}"></h:commandLink>
        </h:form>
    </f:view>
</h:body>
</html>

最佳答案

不幸的是,这个问题的答案并不像乍看起来那么简单。 JSF 是一个很大程度上基于有状态的框架,而您想要的 P-R-G 模式不能很好地适应它。

如果您绝对必须这样做,那么您将需要对您的 bean 请求进行限定范围并使用 View 参数来保存状态。

本质上,您需要进行以下更改:

<小时/>

MyBean.java

@RequestScoped
public class MyBean {
    public string submit() {
        String outcome = "MyView?faces-redirect=true&includeViewParams=true";
        return outcome;
    }
/* Bean goes here */
}
<小时/>

MyView.jsf

<html>
    <f:metadata>
        <f:viewParam name="fname" value="#{myBean.firstName}"/>
    </f:metadata>
    <h:body>
        <h:form>
            <h:inputText value="#{myBean.firstName}"/>
            <h:commandButton value="Submit" action="#{myBean.submit}"/>
        </h:form>
    </h:body>
<小时/>

不幸的是,这有一个缺点,那就是你的参数将被放入 GET 参数中 (http://mysite/MyView.jsf?fname=test),但你的页面不会也有回发问题。

因此,您需要做出权衡,是用有状态来打破后退按钮,还是用无状态和额外的工作来对抗 JSF 的有状态性质以避免回发。

关于java - 如何使用重定向使方法返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21101775/

相关文章:

php - 我的 WordPress 网站被黑了,被重定向到一些未知来​​源

security - 在 JSF 组件中使用 rendered 是否足够安全以防止伪造的操作调用?

java - 不调用jsf中的setter方法

java - Java 和 JSF 2.0 是嵌入式使用的可行替代方案吗?

java - 将文件从 xls 转换为 xlsb 以减小其大小

php - 重定向的 HTTP 问题

java - capturePicture() 将结果位图放入内存不足

java - Java中重定向到隐藏的url

java - 合并两个音频文件

java - IDE 中的异常处理与 exe 或 jar 运行时的异常处理是否不同?