验证< p:inputText>时出现问题.并更新其内容.

基本上当inputText验证失败时,它再也不会被更新.

这是一个简单的例子来澄清:

Facelets:

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

        <h:form id="list" prependId="false">
            <ul>
                <li>Element 1&#160;
                    <p:commandLink action="#{Test.assignElement}" update="detail_value">
                        <f:setPropertyActionListener target="#{Test.currentElement}" value="1" />
                        Assign
                    </p:commandLink>
                </li>
                <li>Element 2&#160;
                    <p:commandLink action="#{Test.assignElement}" update="detail_value">
                        <f:setPropertyActionListener target="#{Test.currentElement}" value="2" />
                        Assign
                    </p:commandLink>
                </li>
            </ul>
        </h:form>

        <h:form id="detail" prependId="false">
            <p:inputText value="#{Test.element}" id="detail_value" required="true" styleClass="#{Faces.messagesFor['detail_value'] ? 'border:1px solid red' : ''}">
                <p:ajax event="blur" update="detail_value"></p:ajax>
            </p:inputText>
        </h:form>
    </body>
</html>

测试bean:

package com.easydevel.test;

public class Test {

    private String currentElement;
    private String element;

    public String getCurrentElement() {
        return currentElement;
    }

    public void setCurrentElement(String currentElement) {
        this.currentElement = currentElement;
    }

    public String getElement() {
        return element;
    }

    public void setElement(String element) {
        this.element = element;
    }

    public String assignElement(){
        setElement(getCurrentElement());
        return "";
    }

}

如果您单击“元素”下面的命令链接,输入字段将被更新,但是当验证失败(只需将输入文本留空,并单击页面的其他任何部分)时,输入框的边框将变为红色.之后,在点击上述命令链接时,它再也不会被更新.

有任何想法吗?

Arjan tijms的答案将会奏效,但是我发现的最好的解决办法是:

>使用Omnifaces Solution
所以,而不是实现你的自我,所有你需要的只是一行简单的代码.

<h:commandButton value="Update" action="#{bean.updateOtherInputs}">
<f:ajax execute="currentInputs" render="otherInputs" />
<f:actionListener type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
</h:commandButton>

>如果您使用的是Primefaces,可以使用resetInput component:

<p:commandButton value="Reset Non-Ajax" actionListener="#{resetInputView.reset}"
immediate="true" ajax="false" style="margin-right:20px;">
<p:resetInput target="panel" />
</p:commandButton>

原型JSF更新验证失败后不起作用的更多相关文章

  1. android – 如何在材料设计中的工具栏上添加搜索按钮

    我试图在弹出的设置左侧添加搜索按钮,但我无法添加工具栏.这是我的menu.xml代码:这是我的toolbar.xml:我正在获取工具栏但没有获得搜索按钮?

  2. android – 为标记片段找到意外的名称空间前缀“xmlns”为标记片段找到的意外名称空间前缀“map”

    为标记片段找到的意外名称空间前缀“xmlns”的原因为标记片段找到了意外的命名空间前缀“map”?

  3. Prime Faces错误消息以不同的样式显示

    我正在使用JSF2.3Mojarra和PrimeFaces7开发一个基于web的应用程序。我的问题是错误消息,我将其定义为根据我当前显示的页面,以不同的样式播种。我怀疑这是由于我使用的某些自定义样式,但我不确定。我有以下情况:1.)显示两条消息,其中一条消息在显示后不久消失。这一次,其中一个文本为白色,背景为红色,而另一个文本则为红色,背景为白色:3.)而且,我还有两个案例3a中。有没有一种方法可以像中的情况那样显示所有消息?

  4. 在哪里可以找到Microsoft docx格式的架构(.xsd文件)

    考虑一个需要docx文档文本而没有用于在R中处理的页眉和页脚的用户.如果将file.docx重命名为file.zip并分析文档document.xml,那么它就是一个包含文本的格式良好的XML文档.Microsfot是否在docx文件的ZIP包中发布了此document.xml子文件的架构?

  5. xaml – Windows通用响应式设计重新定位

    编辑:我使用一个包含2行和2列的Grid工作,使用AdaptiveTrigger将所有内容从行移动到列,反之亦然.可以通过setter更改RelativePanel附加属性值.语法如下:

  6. 如何在WPF中将样式应用于Window Control?

    我正在为App.xaml中的Window设置样式,如下所示:我基本上希望每个Window都将其WindowStyle的属性值设置为None;但它没有用.我在这里想念的是什么?回答问题的人对从具有应用样式的基本窗口继承有一个有趣的想法.

  7. WPF控件作为资源字典中的StaticResource,用于多个WPF Windows?

    我有一个Button控件作为资源字典中的资源,如下所示:我现在在2个不同的Windows.xaml文件中使用上面的按钮控件绑定到ContentControl控件的Content属性,其中每个Window都有自己的DataContext,因此每个窗口应根据其viewmodel的BoundText属性值显示上面按钮控件的内容,如下所示每个窗口.但是,问题是两个Window都显示了BoundText属性的相同值,这意味着两个WPFWindows都具有相同的资源按钮控制实例,在Windows中都使用.如何解决此问

  8. Windows Phone 7手动启动 – WP7手动启动

    我在WP7中有一个webscrollview,它最初没有焦点(内容是hittestVisible,因此取消了scrollviewers的hittestvisibility).当我将内容的可见性设置为false时,我可以滚动滚动浏览器,但是仅在解除手指之后再次将其重新放回.我真的很喜欢重点转移,之后重新应用焦点,以便我可以在滚动视图获得焦点后滑动,不要等待下一个操作开始事件触发.这是我的代码:在C#

  9. Windows Phone Phone 7的Windows Phone屏幕高度不能100%

    我正在使用PhoneGap/Cordova开发WindowsPhone应用程序(尽管如此,我相信我遇到的问题使得PhoneGap无关紧要).无论我做什么,我的html页面的标签都不会垂直填满屏幕.在Chrome或甚至IE中运行网页时看起来不错这是模拟器上的样子,我在.css中的标签中添加了一个蓝色边框,用于强调发生了什么:这是身体的css:这里是页脚css:并且,因为它可能是重要的,这是xaml文

  10. PHP SoapClient:未知所需的WSDL扩展名

    我正在尝试实现在SAPPI系统上运行的Web服务.我看到的WSDL看起来像这样:我的PHP文件看起来像这样:当我运行我的脚本时,我收到以下错误:我尝试搜索谷歌和StackOverflow上的错误,并检查了PHP.net上的评论,但我似乎无法弄清楚我必须改变什么才能使此服务运行.我也试图打开WSDL扩展名URL,似乎存在.有人可以在这里扔我骨头吗?我尝试删除扩展程序网址,导致以下错误:目前我唯一可以想到的解决方案是更新您的UsePolicy标签:更改标签:到这个:

随机推荐

  1. xe-ajax-mock 前端虚拟服务

    最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

  2. vue 使用 xe-ajax

    安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

  3. AJAX POST数据中文乱码解决

    前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

  4. Koa2框架利用CORS完成跨域ajax请求

    实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

  5. form提交时,ajax上传文件并更新到&lt;input&gt;中的value字段

  6. ajax的cache作用

    filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

  7. 浅谈ajax上传文件属性contentType = false

    默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

  8. 909422229_ajaxFileUpload上传文件

    ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

  9. AJAX-Cache:一款好用的Ajax缓存插件

    原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

  10. jsf – Ajax update/render在已渲染属性的组件上不起作用

    我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

返回
顶部