我在对话框中有一个表单,通过单击带有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) 我找不到icons像PickList组件中存在的那样选择箭头的方法,以便在其他方面使用它们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组件完全相同的箭头.
我正在研究primefaces 展示中提到的例子.我正在尝试为数据表创建一个全局过滤器.
目前该表如下所示:

我想要做的是删除单个列过滤器,并只有全局过滤器.像这样:

为此,我删除filterBy列定义上的属性.但是在这样做时,我得到一个javascript警告 - Error in parsing value for过滤器, declaration dropped,全局过滤器不起作用.
有人可以告诉我如何实现这一目标吗?
我采取了以下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:commandButton与h: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) 我正在尝试为一个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
有任何想法吗?
嗨我在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>我的页面非常简单......
有任何想法吗?
我得到了下面的表达式,看起来像这样(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)
我怎么能用正则表达式做到这一点?
我需要将p:dataTable的全局过滤器放在表本身之外,
我想将它放在数据表存在的形式之外,但是为了开始将过滤器放在数据表FORM中,但在数据表本身之外就足够了
即使我将过滤器放在数据表FORM中但在数据表本身之外,它也会停止工作(它在p:dataTable本身内100%工作)
这是过滤器本身的定义
<p:inputText id="globalFilter" onkeyup="myTableNameTable.filter()" style="width:150px;"/>
Run Code Online (Sandbox Code Playgroud) 我正在尝试打破显示在value属性中的文本,<h:outputText如果我将文本直接放在value属性中<h:outputText,则可以正常工作,但是如果我将相同的文本放在属性文件中,它就会停止工作
这是一个文本的例子
A<br />B<br />C
Run Code Online (Sandbox Code Playgroud)
这很好用:
<h:outputText value="A<br />B<br />C" escape="false"/>
Run Code Online (Sandbox Code Playgroud)
不起作用:
<h:outputText value="#{text.someText}" escape="false"/>
属性文件中的代码:
someText = A<br />B<br />C
Run Code Online (Sandbox Code Playgroud)
我找到的唯一方法是<h:outputText用<pre>标签包装,但这不够好,因为它改变了文本的字体,看起来很奇怪,而且我希望有一种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 ×7
jsf ×3
primefaces ×3
javascript ×2
datatable ×1
facelets ×1
filter ×1
java ×1
jquery-ui ×1
regex ×1
uirepeat ×1
validation ×1