如果commandButton
的字段未填充值,则停用required=true
的最佳方法是什么?
首页加载时应禁用该按钮,并且只有在所有必填字段都是包含值的字段时才启用该按钮。
通过最佳方法,我的意思是没有javascript和最小代码: - )
此外,如果commandButton
仅在所有validators
评估为true时启用,那将会很棒。
使用PF 3.2
修改
答案 0 :(得分:2)
由于两个原因,这是不可能的。
required
属性仅存储在服务器端,客户端不知道默认情况下需要哪些字段。不使用required
,您可以在客户端实现此目的,如下所示。 validateContent
应包含禁用commandButton
。
<h:inputText value="#{bean.text}" >
<pe:javascript event="keyup" execute="validateContent();"/>
</h:inputText>
如果去服务器没问题,那么你可以这样做:
<h:inputText id="test1" value="#{bean.text}" required="true" immediate="true">
<f:ajax listener="#{bean.makeDisable()}" render="test2" />
</h:inputText>
</h:commandButton id="test2" value="commandButton1" disabled="#{bean.disable}" />
在豆子里:
private String text;
private boolean disable;
// setter & getter of text
public boolean isDisable()
{
return disable;
}
public void makeDisable(AjaxBehaviorEvent event)
{
if(text == null || text.equals(""))
this.disable=true;
else
this.disable=false;
}
这基本上会在初始加载时加载commandButton
,并且只有在输入文本字段中的任何值时才会启用。
答案 1 :(得分:1)
这是可能的,但我很难称之为“最佳方式”。
您需要为每个字段的变更事件提供ajax
标记。每个字段必须immediate
才能跳过初始验证,process
需要设置为@this
。
在事件监听器中,您可以检查每个必需字段是否存在值,如果存在,则设置一个布尔字段,用于确定是否禁用了commandButton。
这些ajax
代码需要render
@this
以及commandButton
。
但即便如此,仍然有很多Javascript正在进行中,只是没有你必须直接写的。