JSF 2 和发布/重定向/获取?

2024-06-19

如果我错了,请纠正我,但我认为我所有的非 AJAX 提交都应该使用 Post/Redirect/Get (PRG) 方式,因为 GET 应该用于刷新/查询数据,就我而言,我能想到的应用程序页面实际上只对数据进行更新,然后刷新页面,所以我认为 PRG 适合这里。

我相信我可以使用 faces-config.way 来做到这一点,我在其中使用<redirect/>,或者我可以使用return "myview.xhtml?faces-redirect=true";

现在的问题是..

有什么方法可以全局配置这个,对于非 AJAX 调用/提交,自动使用 faces-redirect=true ,这样我的源就这么简单:

return "myview";

你可以用自定义来做到这一点ConfigurableNavigationHandler http://download.oracle.com/javaee/6/api/javax/faces/application/ConfigurableNavigationHandler.html。这是一个启动示例:

package com.example;

import java.util.Map;
import java.util.Set;

import javax.faces.application.ConfigurableNavigationHandler;
import javax.faces.application.NavigationCase;
import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;

public class RedirectNavigationHandler extends ConfigurableNavigationHandler {

    private NavigationHandler parent;

    public RedirectNavigationHandler(NavigationHandler parent) {
        this.parent = parent;
    }

    @Override
    public void handleNavigation(FacesContext context, String from, String outcome) {
        if (!outcome.endsWith("?faces-redirect=true")) {
            outcome += "?faces-redirect=true";
        }

        parent.handleNavigation(context, from, outcome);        
    }

    @Override
    public NavigationCase getNavigationCase(FacesContext context, String fromAction, String outcome) {
        if (parent instanceof ConfigurableNavigationHandler) {
            return ((ConfigurableNavigationHandler) parent).getNavigationCase(context, fromAction, outcome);
        } else {
            return null;
        }
    }

    @Override
    public Map<String, Set<NavigationCase>> getNavigationCases() {
        if (parent instanceof ConfigurableNavigationHandler) {
            return ((ConfigurableNavigationHandler) parent).getNavigationCases();
        } else {
            return null;
        }
    }

}

注册如下faces-config.xml:

<application>
    <navigation-handler>com.example.RedirectNavigationHandler</navigation-handler>
</application>  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSF 2 和发布/重定向/获取? 的相关文章

随机推荐

  • 替换已弃用的“keypress” DOM 事件

    根据MDN 文章 https developer mozilla org en US docs Web Events keypress keypress事件已被弃用 但我在其他地方找不到任何关于我们是否应该在新项目中使用此事件的信息 如果不
  • Spring:如何在主bean创建后初始化相关的惰性bean

    我有带有延迟初始化 bean 的代码 Component Lazy class Resource Component Lazy CustomProcessor class ResourceProcessorFoo Autowired pub
  • 带有 nx 测试的 Angular v13 Jest - SyntaxError:无法在 Runtime.createScriptFromCode 的模块外部使用 import 语句

    我尝试用可能的解决方案来关注每条评论here https github com nrwl nx issues 7844至此 我还依赖 github 上的一个示例项目 它运行得很好 在手动更新所有内容之后 这也开始发生在我身上 并且在运行 n
  • 覆盖 Sinatra 默认的 NotFound 错误页面

    有没有办法覆盖 sinatra 默认的 NotFound 错误页面 Sinatra 不知道这个小曲 我希望 sinatra 在未找到正确的路由时仅将纯字符串显示为 未找到方法 但是当我从路由内部引发 404 错误时 我希望它显示传入的错误消
  • FontAwesome 与 PrimeFaces

    我一直渴望在 Primefaces 中包含 FontAwesome 图标 最后 Optimus 昨天发布了这个伟大的新图标 gt http blog primefaces org p 3004 comment 5422 http blog
  • JavaScript for...in 与 for

    您认为 for in 和 for 循环有很大区别吗 您更喜欢使用哪种 for 为什么 假设我们有一个关联数组的数组 var myArray key value key value1 所以我们可以迭代 for var i 0 i lt myA
  • 如何使用 pdf.js 从客户端设置范围标头?

    我对客户端编程很陌生 我正在尝试使用 pdf js 在我的网站上查看我的 pdf 通过遵循文档中的步骤 我尝试使用 pdf js 加载 pdf 整个 pdf 文件通过单个请求下载 现在 我想做渐进式加载 通过指定范围下载 我在客户端和服务器
  • 对于模板上的非活动用户,user.is_authenticated 始终返回 False

    在我的模板中 login html 我有 if form errors if user is authenticated div class alert alert warning div
  • Jhipster 生成器跳过 --skip-server 处的身份验证代码

    为什么当我们使用 skip server 生成项目时 哟 jhipster skip server 部分身份验证丢失 在 AJS A2 上 是吗 每次我需要粘贴部分代码 Angular 上的 AuthServerProvider 或 Ang
  • UITableView 最后一个单元格被 UITabBarController 隐藏

    我面临一个奇怪的问题 我有一个UITableView在最初的UIViewController of the UITabBarController 起初一切都很好 但是当我更改选项卡并返回到第一个选项卡时 最后一个单元格UITableView
  • Java RSA 加密

    我正在尝试来回编码一个简单的字符串 测试 public static String encode Key publicKey String data throws NoSuchAlgorithmException NoSuchPadding
  • 如何将java项目转换为Maven项目或类似项目

    我目前正在创建一个应用程序 用于一次性编译多个 java 项目以进行编程作业 由于提交 java 项目的方式有很多种 例如 作为 eclipse 项目 作为 netbeans 项目 作为 jar 文件 是否有一个类似的插件 您可以轻松地在项
  • markdown/pandoc 的全站编译? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 With Sphinx doc http sphinx doc org 您可以创建一堆 ReStruct
  • 如何让 Entity Framework 6 + Sqlite + 代码优先工作?

    我正在尝试创建一个简单的项目来探索 Entity Framework 6 Code First 与 sqlite db 提供程序如何工作 但是当我完成我的应用程序时 我收到错误 实体框架提供程序类型 System Data SQLite S
  • 了解 PDFBox 2.0 中字体的加载

    我终于成功地让 PDFBox 打印我的 unicodes 但现在 我想了解我提出的解决方案 下面的代码可以工作并打印一个 到页面 有两件事不起作用 改变PDType0Font load documentMock systemResource
  • 居中时仅在文本的最后一行下划线

    我只想在某些文本的最后一行下划线 当文本换行到更多行时 仍然只有最后一行需要加下划线 我找到了这个解决方案 https stackoverflow com questions 15180827 advanced css challenge
  • 获取函数内的 kwargs

    如果我有一个像这样的 python 函数 def some func arg1 arg2 arg3 1 arg4 2 有没有办法确定哪些参数是从函数内部通过关键字传递的 EDIT 对于那些问我为什么需要这个的人 我没有真正的理由 它是在一次
  • 包含内容的 WPF 新窗口

    我想在现有的主 Windwoe 旁边创建一个带有可滚动文本框的新窗口 我在主窗口中按下 打开新窗口 按钮 然后它应该打开一个带有可滚动文本框的新窗口 inside form2 在 WPF 中 您可以在主窗口中拖放元素 但不能在新窗口中执行此
  • PostgreSQL 中的 Long 数据类型相当于什么?

    我想知道相当于什么LongPostgreSQL 中的数据类型 根据the docs http www postgresql org docs 7 4 interactive datatype html DATATYPE INT看起来像big
  • JSF 2 和发布/重定向/获取?

    如果我错了 请纠正我 但我认为我所有的非 AJAX 提交都应该使用 Post Redirect Get PRG 方式 因为 GET 应该用于刷新 查询数据 就我而言 我能想到的应用程序页面实际上只对数据进行更新 然后刷新页面 所以我认为 P