primefaces 中 richfaces 组件的替代方案

2023-11-23

我目前正在尝试将项目从 RichFaces 3.0 迁移到 PrimeFaces 6.0,但我没有在 PrimeFaces 中找到类似的组件。

  • a4j:区域
  • 丰富:组件控件
  • rich:hash参数

《Follow Richfaces 到 PrimeFaces 迁移指南》是我编写的,作为给我的同事的说明。它部分回答了您的问题,但也许对遇到类似问题的其他开发人员有用。


RichFaces 4.x 到 PrimeFaces 5.x 迁移指南

图书馆

Remove
- richafaces-核心-version.jar;
- richafaces-丰富-version.jar;
- richafaces-a4j-version.jar;
-cssparser-version.jar;
-番石榴-version.jar;
-囊-version.jar.

Add
- 素面-version.jar.

配置

In web.xml remove richfaces and ajax4jsf相关上下文参数

<context-param>
    <param-name>org.richfaces.skin</param-name>
    <param-value>#{lookAndFeel.skin}</param-value>
    <!-- blueSky, classic, DEFAULT, deepMarine, ruby, emeraldTown -->
</context-param>
<context-param>
    <param-name>org.richfaces.enableControlSkinning</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>org.richfaces.enableControlSkinningClasses</param-name>
    <param-value>true</param-value>
</context-param>
<context-param>
    <param-name>org.richfaces.fileUpload.maxRequestSize</param-name>
    <param-value>524288</param-value>
</context-param>
<context-param>
    <param-name>org.richfaces.fileUpload.createTempFiles</param-name>
    <param-value>false</param-value>
</context-param>

In web.xml add

<context-param>
    <param-name>primefaces.FONT_AWESOME</param-name>
    <param-value>true</param-value>
</context-param>
<!-- add context parameter for theme if non-default theme is used
<context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>ProperThemeNameIfUsedForExamplesunny</param-value>
</context-param>
-->

<mime-mapping>
    <extension>woff</extension>
    <mime-type>application/x-font-woff</mime-type>
</mime-mapping>
<mime-mapping>
    <extension>woff2</extension>
    <mime-type>application/x-font-woff2</mime-type>
</mime-mapping>

<!-- add primeFacesFileUploadFilter when file upload component is used -->
<filter>
    <filter-name>primeFacesFileUploadFilter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    <init-param>
        <param-name>thresholdSize</param-name>
        <param-value>1048576</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>primeFacesFileUploadFilter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
    <!-- servlet-name here should match servlet-name in servlet section -->
</filter-mapping>

XHTML

|            | RichFaces (change from)              | PrimeFaces (change to)            |
|------------|--------------------------------------|-----------------------------------|
|Any xhtml   |xmlns:a4j="http://richfaces.org/a4j"  |xmlns:p="http://primefaces.org/ui" |
|            |xmlns:rich="http://richfaces.org/rich"|                                   |
|------------|--------------------------------------|-----------------------------------|
|Listener    |a4j:actionListener                    |f:setPropertyActionListener        |
|AJAX        |a4j:ajax                              |p:ajax                             |
|Button      |a4j:commandButton render="xyz"        |p:commandButton update="xyz"       |
|Link        |a4j:commandLink                       |p:commandLink                      |
|JS function |a4j:jsFunction                        |p:remoteCommand                    |
|Media output|a4j:mediaOutput                       |p:graphicImage, ...                |
|Output area |a4j:outputPanel                       |div or p:tab or p:outputPanel      |
|Parameter   |a4j:param                             |f:setPropertyActionListener,f:param|
|Region      |a4j:region                            |h:panelGroup or p:fragment         |
|Repeat      |a4j:repeat                            |p:repeat                           |
|Status      |a4j:status                            |p:ajaxStatus                       |
|------------|--------------------------------------|-----------------------------------|
|Accordion   |rich:accordion                        |p:accordionPanel                   |
|Accord. item|rich:accordionItem                    |p:tab                              |
|Autocomplete|rich:autocomplete                     |p:autocomplete                     |
|Calendar    |rich:calendar                         |p:calendar                         |
|Sub-table   |rich:collapsibleSubTable              |p:dataTable (nested)               |
|Column      |rich:column                           |p:column                           |
|Button      |rich:commandButton                    |p:commandButton ajax="false"       |
|Command link|rich:commandLink                      |p:commandLink ajax="false"         |
|Control     |rich:componentControl                 |JS function                        |
|Data grid   |rich:dataGrid                         |p:dataGrid                         |
|Data scroll |rich:dataScroller                     |remove (use paginator attribute)   |
|Data table  |rich:dataTable                        |p:dataTable                        |
|Sub-menu    |rich:dropDownMenu                     |p:submenu                          |
|Editor      |rich:editor                           |p:editor (p:textEditor in PF 6)    |
|File upload |rich:fileUpload                       |p:fileUpload                       |
|Focus       |rich:focus                            |p:focus                            |
|Google map  |rich:gmap (RF3)                       |p:gmap                             |
|Hot key     |rich:hotKey                           |p:hotkey                           |
|Spinner     |rich:inputNumberSpinner               |p:spinner                          |
|List        |rich:list                             |p:dataList                         |
|Menu item   |rich:menuItem                         |p:menuitem                         |
|Message     |rich:message                          |p:message                          |
|Messages    |rich:messages                         |p:messages                         |
|Panel       |rich:panel                            |p:panel                            |
|Panel menu  |rich:panelMenu                        |p:panelMenu or p:menu              |
|Menu item   |rich:panelMenuItem                    |p:menuitem                         |
|Pick list   |rich:pickList                         |p:pickList                         |
|Popup       |rich:popup                            |p:dialog                           |
|Select one  |rich:select                           |p:selectOneMenu                    |
|Tab         |rich:tab                              |p:tab                              |
|Menu bar    |rich:toolbar                          |p:menubar or p:toolbar             |
|Menu group  |rich:toolbarGroup                     |remove                             |
|Tooltip     |rich:tooltip                          |p:tooltip                          |
|Tree        |rich:tree                             |p:tree                             |
|Tree node   |rich:treeNode                         |p:treeNode                         |
|------------|--------------------------------------|-----------------------------------|
|Label       |h:outputLabel                         |p:outputLabel                      |
|Input text  |h:inputText                           |p:inputText                        |
|Input secret|h:inputSecret                         |p:password                         |
|Message     |h:message                             |p:message                          |
|Messages    |h:messages                            |p:messages                         |
|Text area   |h:inputTextarea                       |p:inputTextarea                    |
|Dropdown    |h:selectOneListbox                    |p:selectOneMenu                    |
|Select one  |h:selectOneMenu                       |p:selectOneMenu                    |
|Multi-select|h:selectManyListbox                   |p:selectManyMenu                   |
|Check box   |h:selectBooleanCheckbox               |p:selectBooleanCheckbox            |
|Check boxes |h:selectManyCheckbox                  |p:selectManyCheckbox               |
|Radio button|h:selectOneRadio                      |p:selectOneRadio                   |
|Button      |h:commandButton                       |p:commandButton ajax="false"       |
|Regular link|h:commandLink                         |p:commandLink ajax="false"         |
|Image link  |h:commandLink                         |p:menuitem                         |
|Link        |h:link                                |p:link                             |
|Column      |h:column                              |p:column                           |
|Spacer      |<h:graphicImage value="spacer.gif" /> |p:spacer                           | 
|------------|--------------------------------------|-----------------------------------|
|Repeat      |ui:repeat                             |p:repeat                           |
|------------|--------------------------------------|-----------------------------------|
|Field set   |fieldset                              |p:fieldset                         |
|------------|--------------------------------------|-----------------------------------|

CSS

RichFaces 和 JSF 1.x 相关样式应删除:

.msginfo {
    background-image: url(../images/info-icon.gif);
    background-position: top left;
    background-repeat: no-repeat;
    height: 20px;
    padding-left: 20px;
    padding-bottom: 5px;
}
.msginfo td {
    height: 20px;
    padding-left: 20px;
    padding-bottom: 5px;
}
.msgwarn {
    background-image: url(../images/warning.gif);
    background-position: top left;
    background-repeat: no-repeat;
    height: 20px;
    padding-left: 20px;
    padding-bottom: 5px;
}
.msgwarn td {
    height: 20px;
    padding-left: 20px;
    padding-bottom: 5px;
}
.msgerror {
    font-weight: bold;
    background-image: url(../images/error-icon.gif);
    background-position: top left;
    background-repeat: no-repeat;
    height: 20px;
    padding-left: 20px;
    padding-bottom: 5px;
}
.msgerror td {
    height: 20px;
    padding-left: 20px;
    padding-bottom: 5px;
}
.inputRequired {
    background-image: url(../images/icons/input-required.gif);
    background-position: top right;
    background-repeat: no-repeat;
}
.rf-trn-sel {
    background: #FFFFFF !important;
}
.rf-trn-ico {
    height: 0px !important;
    width: 0px !important;
}
.rf-trn-hnd {
    background-image: url(../images/spacer.gif) !important;
}
.rf-pm-top-itm-ico {
    width: 0px !important;
}
.rich-menu-item-hover {
    background-color: #FFFFFF;
    border-bottom: 1px solid #8DC63F;
    border-top: none;
    border-left: none;
    border-right: none;
}
.rich-menu-group-hover {
    background-color: #FFFFFF;
    border-bottom: 1px solid #8DC63F;
    border-top: none;
    border-left: none;
    border-right: none;
}
.rich-menu-list-bg {
    background-color: #FFFFFF;
}
.rich-table-subheadercell {
    white-space: normal;
}
.rich-list-picklist-button-content {
    font-size: 12px;
}

可以添加 PrimeFaces 相关样式(如果需要)。在 GUI 中重新定义了以下样式:

.ui-widget, .ui-widget .ui-widget {
    font-size: 12px;
}
.ui-panel .ui-panel-content {
    padding: 0.5em 0.5em;
}
.ui-dialog .ui-dialog-content {
    padding: 5px 5px;
}
.ui-accordion .ui-accordion-content {
    padding: 5px;
    border: 1px solid #ccc;
}
/* baseline does not work for selectOneMenu, top or middle vertical align should be used */
.ui-selectonemenu {
    vertical-align: middle;
}
input[type="text"][disabled] {
    color: #000000;
}

图像和主题

一些图像可以被删除:错误图标.gif, 警告.gif, 信息图标.gif, 垫片.gif。 PrimeFaces 具有用于相同目的的内部图像。

皮肤特性文件可以被删除,因为 PrimeFaces 中的主题以不同的方式配置。

Java

数据表的数据模型应更改为LazyLoadDataModel.

选择列表的数据模型应更改为DualListModel.

pickList 的更改事件类型应从ValueChangeEvent to TransferEvent.

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

primefaces 中 richfaces 组件的替代方案 的相关文章

随机推荐

  • 如何从 Dispatcher 线程访问单独的线程生成的 WPF UI 元素?

    我需要使用诸如FixedDocument FlowDocument PageContent BlockUIContainer 等wpf UI 元素生成打印预览 很长的一个 为了保持我的 UI 响应能力 我在一个单独的 Thread 类线程上
  • 将视频复制到 uipasteboard

    我已使用以下代码成功将图像复制或添加到粘贴板 if ver float lt 6 0 UIPasteboard pasteboard pasteboard UIPasteboard generalPasteboard NSString fi
  • Angular cli + Windows 身份验证后端

    我创建了一个 Angular CLI 项目 其中包含对包含 Web API 服务的后端项目的代理引用 launchSettings json 后端项目 iisSettings windowsAuthentication true anony
  • Java中的静态方法总是在编译时解析吗?

    Java中的静态方法总是在编译时解析吗 是的 Sun 论坛上的这个帖子对此进行了彻底的调查和解释 Java 新手 静态方法没有后期绑定 几段引述 当编译器编译该类时 它会在编译时决定为每个静态方法调用调用哪个确切的方法 这是与非静态方法调用
  • Hudson Slave 可以运行插件吗?

    我们有一个 Hudson 自定义插件 它将构建的输出上传到远程计算机上 我们刚刚开始研究使用 Hudson 从属设备来提高构建的吞吐量 但是使用自定义插件的项目无法部署并出现 FileNotFoundExceptions 从我们所看到的来看
  • 矢量.back() 和矢量.end() 有什么区别?

    我是一名新 C 学习者 我阅读了有关 C STL 访问向量最后一个元素的代码块 为什么第6 7 8行的代码需要减1才能等于第5行的代码 1 std vector
  • Asp.Net MVC4 显示复选框列表

    我已经搜索了很多 只花了 3 天的时间来搜索和尝试不同的技术 在 stackoverflow 等 但我没有找到在 asp net mvc 中实现 checkboxlist 的解决方案 最后我将我的问题发布到 stackoverflow 所以
  • 如何从 ValueChangeEvent 重新加载 JSF 页面?

    我有一个选择菜单 其中选择的更改应将用户导航到相关页面 那么 如何使用 selectonemenu 控件模拟命令按钮的操作处理 或者是否有更优雅的方法来实现此目的 为此你不能绕过 Javascript 基本上你需要让 Javascript
  • 创建自定义 Hibernate UserType - isMutable() 是什么意思?

    我正在 Hibernate 中为项目创建自定义 UserType 在我使用 isMutable 方法之前 它一直相对简单 我试图弄清楚这种方法在合同方面意味着什么 这是否意味着我为其创建 UserType 的类是不可变的 或者是否意味着持有
  • 如何将视频特征从 CNN 传递到 LSTM?

    将视频帧通过卷积网络并获得输出特征图后 如何将该数据传递到 LSTM 中 另外 如何通过 CNN 将多个帧传递给 LSTM 在其他作品中 我想用 CNN 处理视频帧以获得空间特征 然后我想将这些特征传递给 LSTM 以对空间特征进行时间处理
  • pandas merge_asof:不明确的参数类型错误

    我正在尝试使用merge asof来自 Pandas 我收到错误 TypeError Function call with ambiguous argument types 可重现的例子 import pandas as pd a pd D
  • 检查 tabBar 在 iOS 应用程序上是否可见

    我正在开发一个 iOS 应用程序 它有一个 UITabBarController 用于显示 TabBar 在某些地方 我呈现了一个隐藏 tabBar 的 modalView 全屏 我想检测我的 tabBar 何时对用户可见 有什么方法可以检
  • 如何处理不断发展的 c++ std:: 命名空间?例如: std::tr1::shared_ptr 与 std::shared_ptr 与 boost::shared_ptr 与 boost::tr1::shared_ptr

    对于我当前正在处理的代码 我们有时需要在一些旧系统上使用旧编译器进行编译 例如 我们在旧 IBM BlueGene L 上运行 sims 它的支持合同规定了一些相当旧的 C 编译器 代码本身使用了shared ptrs 最初是为了使用std
  • Eclipse Juno - 为什么对未使用的带注释的私有字段没有警告?

    在以前版本的 Eclipse 中 这工作得很好 在错误 警告中我检查了 Unused private field gt Warning 但这似乎不起作用 例如 public class Main Resource private int a
  • UIButton addTarget self 是如何工作的?

    我试着找出原因self指向 GameViewController 而不是 Answer GameViewController swift class GameViewController UIViewController var gamep
  • Java中递归搜索目录

    在 Java 中查找具有特定名称的目录的最佳方法是什么 我正在查找的目录可以位于当前目录或其子目录之一 在 Java 8 中通过流API Optional
  • 实现一个方法,将块用作回调

    我想写一个类似的方法 void myMethodWithView UIView exampleView completion void BOOL finished completion 我基本上已经剥离了从 Apple 的类方法之一中获取的
  • 如何从身份验证代理后面运行 svcutil.exe

    我想运行svcutil exe用于访问 Internet 上的 Web 服务的工具 不幸的是 每当我尝试时 我都会收到一堆错误 其中包括以下消息 请求失败 HTTP 状态为 407 需要代理身份验证 ISA 服务器需要授权才能完成请求 对
  • 在 Flex/Actionscript 中编码 HTML

    有没有可以转换的函数 Me Myself I to Me Myself amp I 我在 Flex 文档中找不到任何内容 Thanks Check this出去 没有要包括的 SWC 基本上是 var s String new XMLNod
  • primefaces 中 richfaces 组件的替代方案

    我目前正在尝试将项目从 RichFaces 3 0 迁移到 PrimeFaces 6 0 但我没有在 PrimeFaces 中找到类似的组件 a4j 区域 丰富 组件控件 rich hash参数 Follow Richfaces 到 Pri