JSF 中基于两个组件的组合的验证/转换

2024-05-15

我正在开发一个 JSF Web 应用程序,我需要使用周期性作为数据结构。以下是我使用的 Java 类:

public class Periodicity implements Serializable {

    private Integer value = 0;

    private PeriodicityType type;

    //Getter and setters

}

public enum PeriodicityType {
    DAY, WEEK, MONTH, YEAR
}

这样我就可以为我的任务指定不同的周期,这可以将值与PeriodicityType.

我还创建了一个名为的输入复合元素周期输入.xhtml,我可以用它以可重用的方式提供不同形式的数据类型:

<!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:composite="http://java.sun.com/jsf/composite"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets">

<h:body>
    <composite:interface>
        <composite:attribute name="value" required="true" />
        <composite:attribute name="disabled" required="false" default="false" />
    </composite:interface>

    <composite:implementation>
        <h:panelGrid columns="2" id="#{cc.id}">
            <p:spinner value="#{cc.attrs.value.value}" min="1"
                id="value_spinner" disabled="#{cc.attrs.disabled}" />
            <p:selectOneMenu value="#{cc.attrs.value.type}" style="width:200px"
                disabled="#{cc.attrs.disabled}">
                <f:selectItem noSelectionOption="true"
                    itemLabel="#{windowsMessages.NOT_ASSIGNED}" />
                <f:selectItems value="#{viewUtils.periodicityTypes}" />
            </p:selectOneMenu>
        </h:panelGrid>
    </composite:implementation>
</h:body>
</html>

基本上我有一个spinner元素和一个selectOneMenu,以便选择周期性的值和类型。也有机会不选择任何类型,在这种情况下,输入数值必须为零。或者,甚至更好,如果没有选择周期性,则输入必须转换为空/空元组.

正如我读到的一些sites http://balusc.blogspot.com.es/2007/12/validator-for-multiple-fields.html有机会在验证方法中访问 id 来同时验证多个 JSF 组件:

UIInput确认组件 = (UIInput) component.getAttributes().get("confirm");

问题是,如何调整它以便在没有固定 id 的复合组件中使用?


一种方法是创建一个扩展的支持组件UIInput并做工作UIInput#getSubmittedValue()。子输入可直接通过findComponent().

<cc:interface componentType="inputPeriodicity">
    ...
</cc:interface>
<cc:implementation>
    ...
    <p:spinner id="value_spinner" ... />
    <p:selectOneMenu id="type_menu" ... />
    ...
</cc:implementation>

with

@FacesComponent("inputPeriodicity")
public class InputPeriodicity extends UIInput implements NamingContainer {

    @Override
    public String getFamily() {
        return UINamingContainer.COMPONENT_FAMILY;
    }

    @Override
    public Object getSubmittedValue() {
        UIInput typeMenu = (UIInput) findComponent("type_menu");
        String type = (String) typeMenu.getSubmittedValue();

        if (type == null || type.isEmpty()) {
            UIInput valueSpinner = (UIInput) findComponent("value_spinner");
            valueSpinner.setSubmittedValue("0"); // Don't use int/Integer here!
        }

        return super.getSubmittedValue();
    }

}

也可以看看:

  • 使用 f:convertDateTime 将 java.util.Date 拆分为两个表示小时和分钟的 h:inputText 字段 https://stackoverflow.com/questions/17235721/split-java-util-date-over-two-hinputtext-fields-representing-hour-and-minute-wi

无关针对具体问题,<h:panelGrid id="#{cc.id}">确实不对。如果确实需要,请给它一个固定的 ID。

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

JSF 中基于两个组件的组合的验证/转换 的相关文章

  • 从 javascript 访问 JSF 资源

    我想访问 JSF 资源 在WebPages resources img 来自 JavaScript 函数 例如 function hideSpinner arguments i poster img sppiner png 我努力了argu
  • 需要 Spring 3 JSF 2 集成示例

    我想将 Spring 3 Web Flow 2 JSF 2 集成在一起 我需要您向我推荐一个好的教程或示例 提前致谢 UPDATE 我使用了以下示例 它对我来说运行良好 没有任何问题 http www mkyong com jsf2 jsf
  • 如何使用 Twitter Bootstrap 弹出窗口进行 jQuery 验证通知?

    我可以使用弹出窗口出现引导程序 http twitter github com bootstrap很容易 我还可以使用标准进行验证jQuery 验证插件 http docs jquery com Plugins Validation or
  • ViewScope:定位“正确的”复合组件的对象实例

    进一步了解 jsf 2 视图范围的过程 我再次遇到了问题 我的复合组件的绑定对象创建了多个实例 并且设置值似乎没有针对 正确 的对象 我的初始设置与中相同从视图范围的 bean 自动实例化会话范围的 bean https stackover
  • codeigniter 动态表单输入名称的表单验证

    我有一个 codeigniter 应用程序 我的视图使用数据库行 ID 附加到输入名称以获取唯一 ID 这允许我在表单操作 即更新 中使用所有输入 我的视图语法 table tr th nbsp th th nbsp th th Custo
  • 添加验证码到 Symfony2 登录

    我需要将验证码添加到我的登录页面 我正在使用 GregwarCaptchaBundle 和 FosUserBundle 目前我已经使用以下代码在登录时显示验证码
  • 使用条件渲染时,未在请求作用域 bean 中处理输入值

    我知道此类问题已在这里被问过数百万次 但我在相关帖子中找不到我的问题的解决方案 JSF 1 2 我有一个请求范围的 bean 其方法用作 valueChangeListener class DoStuff public void step1
  • 在 JSF 自定义验证器中区分 ajax 请求和完整请求

    我的验证器需要知道它是完整请求还是 ajax 请求 在我当前的解决方案中 我检查 http 请求标头X Requested With元素 public void validate FacesContext context UICompone
  • Symfony2 无效形式且无错误

    我的 Symfony2 生成的 CRUD 表单有问题 与MongoDB文档 但我不认为这是相关的 在我的控制器的 createAction 方法中 当我调试表单结果时 form gt isValid returns false form g
  • Scala:将整个列表的 Either 与每个元素的 Either 组合

    我有一个 Either 列表 它代表错误 type ErrorType List String type FailFast A Either ErrorType A import cats syntax either val l List
  • 在 JSF 中动态创建表列

    我正在开发仪表板应用程序 我必须检索一组记录并显示在动态表框中 页框长度是固定的 现在可以初始化列和行 它应该看起来像这个示例 目前我正在使用数据表来显示 但它将所有数据打印在一列中 我如何将我的代码更改为上述模式
  • p:对话框没有按预期工作?

    我有两个 p commandLink
  • primefaces 元素无法加载我的 css 文件的 url

    当我将样式 css 放在同一个 xhtml 页面中时 它可以与我的页面一起使用 例如
  • Symfony 2 中带有参数/参数的自定义验证器/约束

    我想创建一个类似于 GitHub 处理删除存储库的方式的验证器 要确认删除 我需要输入存储库名称 这里我想通过输入实体属性 名称 来确认删除 我需要将名称传递给约束或以某种方式访问 它 我该怎么做 你确实可以使用验证器约束来做到这一点 1
  • JSF 定制转换器

    我有一个像这样的自定义转换器 Override public Object getAsObject FacesContext facesContext UIComponent component String str System out
  • jsf文件下载不起作用

    当我点击h commandButton它执行myBean dowanlod 方法 但它不下载任何文件 这是我在支持 bean 中的方法 没有例外 光标变得忙碌 似乎在等待响应 对于这种操作是否有任何额外的配置或者这段代码有什么问题吗
  • Laravel 验证:存在附加列条件 - 自定义验证规则

    在 Laravel 中指定存在验证规则时 是否有一种方法可以引用另一个字段 我希望能够说输入 a 必须存在于表 a 中 输入 b 必须存在于表 b 中 并且表 b 中列 x 的值必须等于输入 a 最好通过例子来解释 public rules
  • Google 地图 api javascript 标签未验证

    正在寻找当前网站 正在使用 W3C 进行完全 HTML5 验证 这是无法验证的 Google 地图 API Javascript 标记 这是W3C的回应 没有开始字符引用 可能应该被转义为 它不喜欢 定义传感器是真还是假时 我尝试过以下方法
  • C# 验证用户输入(如信用卡号)

    这是为了一个任务 我需要为三明治店创建一个程序 其中一部分是验证用户的付款信息 本次作业的指导方针是 信用卡号码必须为16位数字 前 4 位数字必须是以下数字之一 1298 1267 4512 4567 8901 8933 到期日期必须为
  • CakePHP3 中令人困惑的验证与应用程序规则

    有关验证的多个问题可能属于同一类 因为它们都在解决 CakePHP 3 中的新验证概念 我已阅读章节 1 http book cakephp org 3 0 en orm validation html 2 http book cakeph

随机推荐

  • windows关闭tomcat后保持端口锁定

    我遇到了一个问题 该问题发生在不同站点的 3 台不同服务器上 问题是 当我关闭 Windows 服务器上的 Tomcat 7 和 8 5 版本 服务并尝试重新启动该服务后 该服务将无法启动 因为 tomcat 认为端口仍在使用中 以下是错误
  • 从 Ruby 中的 DateTime 变量获取时间

    我在 ruby 中工作 我有一个包含数据库中今天的日期时间的对象 我只想要时间截断数据 我怎样才能得到那个 Try 日期时间 strftime http www ruby doc org stdlib 1 9 3 libdoc date r
  • 为什么 System.Math 有 Sin、Cos 等外部方法?

    MethodImpl MethodImplOptions InternalCall public static extern double Sin double a 其原因何在 MethodImplOptions InternalCall表
  • 必填字段验证器中的数字验证

    是否可以将数字验证放入 asp net 文本框中的必填字段验证器中 您应该使用比较验证器 http msdn microsoft com en us library system web ui webcontrols comparevali
  • 自动过滤/排序列表框项目 (Windows Phone)

    我想确保添加到列表框中的项目根据每个项目的序列号按升序排序 例如 1 项目 2 项目 4 项目 3 项目应根据其编号自动排序 1 2 3 10 这是 C 源代码 namespace XeroQuiz public partial class
  • 如何使用 webpack 正确捆绑 vscode 扩展

    我遇到的问题是当我跑步时vsce package我仍然明白This extension consists of 3587 separate files For performance reasons you should bundle yo
  • 调试器异常错误和内存超调

    我尝试运行以下代码 但它显示有关内存地址的错误 并显示一条消息 循环后 n 可能未定义 请看一看 var n max integer n integer r R1 f h0 Array of Real const h 0 00889 nip
  • 使用 mosca MQTT 的请求响应模式

    有没有办法使用 mosca MQTT 实现请求响应模式 以 检查客户端的回复 如果在预期时间内未收到预期回复 则重新发布 我相信这在 Mqtt 5 中是可能的 但截至目前 我必须使用 QoS 1 的 Mosca 代理 支持直到 Mqtt 3
  • 错误 11 秒后等待 Protractor 与页面同步超时

    我的量角器测试有问题 我的角度应用程序使用 timeout 不断从服务器轮询某些内容 不幸的是 当我运行测试时 这会导致以下错误消息 There was a webdriver error Error Timed out waiting f
  • Javascript 放大/缩小到鼠标 x/y 坐标

    我设法让鼠标拖动来滚动div 但是用鼠标放大 缩小不完整 它有效 但我希望鼠标指针将图像保持在该位置并同时缩放它 如下所示 我需要使用scrollBy 将滚动返回到缩放之前的上一点 有人知道该怎么做吗 这是某人制作的小提琴https jsf
  • 如何在 Android 中启用高速蓝牙(3.0+HS 或 4.0)?

    所以我在两部蓝牙 4 0 Android 手机上有一个 BT 客户端和一个服务器应用程序 服务器等待连接通过 BluetoothServerSocket serverSocket mBluetoothAdapter listenUsingR
  • Python 中的错误? threading.Thread.start() 并不总是返回

    我有一个很小的 Python 脚本 在我看来 threading Thread start 表现出意外 因为它不会立即返回 在线程内我想调用一个方法boost python基于对象 不会立即返回 为此 我将对象 方法包装如下 import
  • 如何使用 bash 显示具有两个子文件夹的文件夹?

    我通过 Cygwin 使用 bash 我有一个大文件夹 a 有很多子文件夹 b 这些子文件夹各有一个或两个子文件夹 c 我想找到所有有两个子文件夹 c 的子文件夹 b 并输出它们 结构如下 a b1 c1 b2 c1 c2 b3 c1 c2
  • 用作 ServiceStack 的 IoC 时在 autofac 中配置生命周期范围

    我目前正在使用 AutoFac 作为我们的 ServiceStack Web 服务应用程序的 DI 容器 我能够配置接线和所有内容 但在阅读了有关范围的部分后 我不知道在注册我的组件时最好使用哪个范围 在我们的特定情况下 我认为 PerHt
  • 如何在禁用的 HTML 按钮上呈现工具提示

    我有一个 HTML 按钮 我尝试根据按钮的 标题 属性在其上渲染工具提示 但它没有渲染 主要是因为它被禁用了 然后 我尝试将按钮包装在跨度中并设置跨度的 标题 属性 将鼠标悬停在包含在跨度中的按钮上仍然没有效果 工具提示将呈现在不属于按钮标
  • 如何从 iOS 应用程序检测不安全的 wifi 网络

    我想检测我的应用程序中是否存在不安全的 wifi 网络 是否有任何公共 iOS API 可以实现相同的目的 没有记录的 API 可以获取该信息 如果您的应用程序需要通过网络发送和接收敏感数据 您通常应该假设没有安全连接
  • 属性中的角度表达式

    我有一个使用 Angular 的页面 其中我从引导程序实现了弹出窗口 img class state msg 数据内容无法正确呈现 它按字面意思返回 item status message 而不是 message 的值 角度在 数据 属性中
  • Jquery POST 获取建议列表

    我有下一个代码 它运行良好 问题是当用户写完单词时 脚本不断创建后调用并不断更改建议列表 我想做一些事情 如果用户继续写一个单词 脚本会停止所有的 post 调用 只执行最后一个 inputString keydown function l
  • 用数字 1-1000 填充 Postgres 数据库?

    我是 pgAdmin3 的新手 我想用数字 1 1000 填充 pgAdmin3 中的数据库 我该怎么做呢 目前 我创建了一个名为 MyDatabase 的数据库 其中没有任何内容 每行应与其数值相对应 第 1 行应包含 1 第 2 行应包
  • JSF 中基于两个组件的组合的验证/转换

    我正在开发一个 JSF Web 应用程序 我需要使用周期性作为数据结构 以下是我使用的 Java 类 public class Periodicity implements Serializable private Integer valu