我在申请中使用icefaces。 页面中有一个表单,其中包含几个输入字段。
我想只在字段有效时启用命令按钮(其他组件没有错误)
有可能吗?
示例代码
<ice:form>
<ice:panelGrid columns="2">
<ice:outputLabel>Enter Date</ice:outputLabel>
<ice:panelGroup>
<ice:selectInputDate renderAsPopup="true" id="InputDate" value="#{Bean.FormDate}" partialSubmit="true" ></ice:selectInputDate>
<ice:message for="InputDate" />
</ice:panelGroup>
<ice:outputLabel>Days</ice:outputLabel>
<ice:panelGroup>
<ice:inputText value="#{Bean.days}"partialSubmit="true" id="inputDays">
<f:validateLongRange minimum="1" maximum="10"/>
</ice:inputText>
<ice:message for="inputDays"/>
</ice:panelGroup>
<ice:commandButton value="Submit" action="#{Bean.SomeAction}"></ice:commandButton>
</ice:panelGrid>
在上面的代码中,我只想在日期和日期有效时启用提交命令按钮(没有排队的任何错误。
答案 0 :(得分:1)
如果你使用的是jsf 2.0,你可以这样做:
<ice:form>
<ice:panelGrid columns="2">
<ice:outputLabel>Enter Date</ice:outputLabel>
<ice:panelGroup>
<ice:selectInputDate renderAsPopup="true" id="InputDate"
value="#{Bean.FormDate}" partialSubmit="true"
binding="#{inputDateComponent}">
<f:ajax execute="@this" render="submit inputDateMessage" />
</ice:selectInputDate>
<ice:message id="inputDateMessage" for="InputDate" />
</ice:panelGroup>
<ice:outputLabel>Days</ice:outputLabel>
<ice:panelGroup>
<ice:inputText value="#{Bean.days}" partialSubmit="true"
id="inputDays" binding="#{inputDaysComponent}">
<f:validateLongRange minimum="1" maximum="10" />
<f:ajax execute="@this" render="submit inputDaysMessage" />
</ice:inputText>
<ice:message id="inputDaysMessage" for="inputDays" />
</ice:panelGroup>
<ice:commandButton id="submit" value="Submit"
action="#{Bean.SomeAction}"
disabled="#{!inputDateComponent.valid}" />
</ice:panelGrid>
</ice:form>
我没有测试过这个具体的例子,但你可以看到我要去的地方。输入字段将在更改时进行评估,并显示验证错误或创建未禁用commandButton的条件。
如果您希望仅在输入字段有效时才显示按钮,您还可以使用rendered =并进行正断言。
答案 1 :(得分:0)
您可以使用此处所述的阶段监听器:
http://balusc.blogspot.com/2007/12/set-focus-in-jsf.html
此示例中的阶段侦听器使用附加了消息的client-id构建一个字符串。检查bean中的这个字符串,并根据是否有带有消息的id来创建bean属性。
然后,您可以根据bean属性启用命令按钮。
答案 2 :(得分:0)
将每个输入字段切换为'immediate =“true”'并在字段中添加验证器。
让验证器设置/取消设置一个布尔值,以确定字段是否包含有效数据,并按照sparrowhawk的建议进行操作,并在提交按钮的渲染表达式中测试此布尔值。