小编Dan*_*iel的帖子

如何在执行ajax命令时查找验证错误(required ="true")的指示

我在对话框中有一个表单,通过单击带有ajax的commandbutton来关闭该表单,

像这样

<h:commandButton value="Add" action="#{myBean.addSomething(false)}"
    id="add_something_id" >
    <f:ajax render="@form someTable" execute="@form"
        onevent="closeAddNewSomethingDialogIfSucceeded"></f:ajax>
</h:commandButton>
Run Code Online (Sandbox Code Playgroud)

这是关闭对话框的js代码

    function closeAddNewSomethingDialogIfSucceeded(data) {
        if(data.status === 'success') {
            $("#dialog_id").dialog("close");
        }
    }
Run Code Online (Sandbox Code Playgroud)

直到这里没问题......

现在我将一些对话框表单字段更改为required="true"现在我想阻止关闭对话框我得到验证错误...

但是ajax data.status仍然达到了它的success状态,我无法弄清楚我可以挂钩的验证失败的迹象......

有任何想法吗?

感谢BalusC回答我做了以下事情:

在JSF中,补充道:

    <h:panelGroup id="global_flag_validation_failed_render">
        <h:outputText id="global_flag_validation_failed" value="true" 
            rendered="#{facesContext.validationFailed}"/>
    </h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

f:ajax变成了

<f:ajax render="@form someTable global_flag_validation_failed_render"
Run Code Online (Sandbox Code Playgroud)

并在js中添加了以下检查

if(data.status === 'success') {
    if($("#global_flag_validation_failed").length === 0){
         $("#dialog_id").dialog("close");
    }
}
Run Code Online (Sandbox Code Playgroud)

jsf-2

32
推荐指数
1
解决办法
3万
查看次数

PrimeFaces图标

我找不到iconsPickList组件中存在的那样选择箭头的方法,以便在其他方面使用它们CommandButtons.

好吧,我知道为了在CommandButton中使用图标,必须遵循以下指示:

<p:commandButton outcome="target" icon="star" title="With Icon"/>
Run Code Online (Sandbox Code Playgroud)

已经在css文件中定义了星形图标:

.star {
    background-image: url("images/star.png");
}
Run Code Online (Sandbox Code Playgroud)

但我更喜欢使用与PickList组件完全相同的箭头.

jsf jquery-ui primefaces

23
推荐指数
2
解决办法
7万
查看次数

primefaces全局过滤器没有列过滤器

我正在研究primefaces 展示中提到的例子.我正在尝试为数据表创建一个全局过滤器.
目前该表如下所示: 在此输入图像描述

我想要做的是删除单个列过滤器,并只有全局过滤器.像这样: 在此输入图像描述
为此,我删除filterBy列定义上的属性.但是在这样做时,我得到一个javascript警告 - Error in parsing value for过滤器, declaration dropped,全局过滤器不起作用.
有人可以告诉我如何实现这一目标吗?

javascript datatable filter primefaces

13
推荐指数
1
解决办法
1万
查看次数

如何在不同的消息元素中显示相同输入字段的ValidatorException和required ="true"

我采取了以下BalusC启动示例并通过添加提交按钮和其他h:消息并f:ajax从中h:inputSecret's删除了(f:ajax由于某种原因在我离开第一个h:inputSecret时立即显示"值是必需的"错误的原因删除了原因)第二h:inputSecret- 但用户没有机会输入... ??? < - 另一个未来的问题?:))

好吧,长话短说:

我试图找出如何在全局h:消息中显示关于密码字段(密码不相等)的验证错误,而不是在密码字段的个别h:消息中显示我确实需要的="true"将显示在<h:message每个字段中...

但是现在验证消息(由我的异常抛出)和required ="true"正在同一个地方显示

这是代码:

<h:outputLabel for="password" value="Password:" />
<h:inputSecret id="password" value="#{bean.password}" required="true">
    <f:validator validatorId="confirmPasswordValidator" />
    <f:attribute name="confirm" value="#{confirmPassword.submittedValue}" />
</h:inputSecret>
<h:message id="m_password" for="password" />

<h:outputLabel for="confirm" value="Password (again):" />
<h:inputSecret id="confirm" binding="#{confirmPassword}" required="true">
</h:inputSecret>
<h:message id="m_confirm" for="confirm" />
Run Code Online (Sandbox Code Playgroud)

和附加h:commandButtonh:messages下面的代码:

<h:commandButton value="doSomething" action="#{myBean.myAction}">
    <f:ajax execute="password confirm" render="m_password m_confirm"></f:ajax>
</h:commandButton>
<h:messages globalOnly="true" styleClass="validation_value_required"/>
Run Code Online (Sandbox Code Playgroud)
@FacesValidator("confirmPasswordValidator")
public class ConfirmPasswordValidator …
Run Code Online (Sandbox Code Playgroud)

validation jsf jsf-2

10
推荐指数
1
解决办法
1万
查看次数

如何在ui:repeat中设置组件/标签的id

我正在尝试为一个id分配一个id:在ui中的panelGroup:repeat

像那样

<ui:repeat value="#{bean.columns}" var="column">
    <h:panelGroup layout="block" id="column_#{column.id}" 
        styleClass="#{column.id} dashboard_column">
Run Code Online (Sandbox Code Playgroud)

问题是,id值正在styleClass值中正确放置,但它没有在id属性中设置,所有在id属性中设置的都是由JSF +我的硬编码值"column_"自动生成的id.

如果我删除硬编码"column_"我得到一个例外

java.lang.IllegalArgumentException:组件标识符不能是零长度的String

有任何想法吗?

jsf facelets jsf-2 uirepeat

9
推荐指数
2
解决办法
1万
查看次数

什么可能导致浏览器控制台中的"jsf未定义"错误

嗨我在Tomcat 6上有一个基于MyFaces 2.0.11和Primefaces 3.0的简单新项目

当我试图导航到一个页面时,我收到Uncaught ReferenceError: jsf is not defined错误,它指示我在我的js代码中的参考jsf.ajax.addOnEvent...(这是合理的,因为我正在尝试使用jsf.js并且它不是事件存在我'我的页面..)

如果我查看我的页面的来源,我不包含该jsf.js文件

现在如果我像这样手动添加它

<h:outputScript name="jsf.js" library="javax.faces" target="head"/>

一切都运行得很好......但我不想手动包含它,相反我想知道是什么原因导致我的页面中缺少jsf.js

我谷歌一段时间没有类似的情况代表我的

我有<h:head>,<h:body>我的页面非常简单......

有任何想法吗?

javascript jsf-2

9
推荐指数
1
解决办法
8578
查看次数

如何把几个"Sqrt [里面的一些文字]"变成几个Sqrt(里面的一些文字),我的意思是从[]到()

我得到了下面的表达式,看起来像这样(Sqrt [XXX]的数量是未知的)

Sqrt[A+B] + Sqrt[Min[A,B]] * Min[Sqrt[C],D]
Run Code Online (Sandbox Code Playgroud)

我希望把所有 Sqrt[XXX]Sqrt(XXX),我想更换[]的支架Sqrt()支架

所以上面的例子看起来像

Sqrt(A+B) + Sqrt(Min[A,B]) * Min[Sqrt(C),D]

我不想"伤害" []表达式中的其他括号(如旁边的那些Min)

我怎么能用正则表达式做到这一点?

java regex

6
推荐指数
1
解决办法
173
查看次数

是否可以将全局过滤器放在p:dataTable之外?

我需要将p:dataTable的全局过滤器放在表本身之外,

我想将它放在数据表存在的形式之外,但是为了开始将过滤器放在数据表FORM中,但在数据表本身之外就足够了

即使我将过滤器放在数据表FORM中但在数据表本身之外,它也会停止工作(它在p:dataTable本身内100%工作)

这是过滤器本身的定义

<p:inputText id="globalFilter" onkeyup="myTableNameTable.filter()" style="width:150px;"/>  
Run Code Online (Sandbox Code Playgroud)

primefaces jsf-2

5
推荐指数
1
解决办法
5194
查看次数

h:带有来自资源包的换行符的outputText(属性文件)

我正在尝试打破显示在value属性中的文本,<h:outputText如果我将文本直接放在value属性中<h:outputText,则可以正常工作,但是如果我将相同的文本放在属性文件中,它就会停止工作

这是一个文本的例子

A&lt;br /&gt;B&lt;br /&gt;C
Run Code Online (Sandbox Code Playgroud)

这很好用:

<h:outputText value="A&lt;br /&gt;B&lt;br /&gt;C" escape="false"/>
Run Code Online (Sandbox Code Playgroud)

不起作用:

<h:outputText value="#{text.someText}" escape="false"/>

属性文件中的代码:

someText = A&lt;br /&gt;B&lt;br /&gt;C
Run Code Online (Sandbox Code Playgroud)

我找到的唯一方法是<h:outputText<pre>标签包装,但这不够好,因为它改变了文本的字体,看起来很奇怪,而且我希望有一种JSF方式来实现换行时使用属性文件

顺便说一下,我查看了以下链接,但它们对我没有好处

JSF h:outputText换行符,用于字符串中的长字

在p:commandButton中插入一个换行符

谢谢!

jsf-2

5
推荐指数
1
解决办法
7388
查看次数

仅在显示特定h:消息时显示JSF元素

我有一个h:form带有几个输入,每个都有自己的h:message,我正在寻找一种方法来显示(使用render或指定一些styleClass)只有在显示特定的时候一些其他元素h:message(并在h:message没有显示时隐藏).

这是一段代码片段

<li>
    <h:panelGroup id="current_password_wrapper">
        <p:password value="#{myBean.myCurrPass}" id="current_password" required="true"
            styleClass="required_field" />
    </h:panelGroup>
    <h:message for="current_password"/>
</li>
<li>
    <h:panelGroup id="new_password_wrapper">
        <p:password value="#{myBean.myNewPass}" id="new_password" required="true"/>
    </h:panelGroup>
    <h:message for="new_password"/>
    <h:commandLink value="my value"/>
</li>
Run Code Online (Sandbox Code Playgroud)

我想h:commandLink只在显示时才<h:message for="new_password"/>显示

到目前为止我找不到任何东西......

jsf-2

5
推荐指数
1
解决办法
1760
查看次数