我的panelLabelAndMessage
包含inputComboboxListOfValues
和outputText
。 LOV是必填字段,因此旁边有星号。但我已将simple
属性更改为true,因为我不想显示LOV的标签,并将相同的标签分配给panelLabelAndMessage
。还将星号的showrequired
属性更改为true。但现在LOV字段也显示星号,这是不合需要的。任何方法都可以删除星标但仍然具有模型级别验证。
我不想使用LOV的required
属性。
我的标签和字段的代码如下。
<af:panelLabelAndMessage label="#{bindings.Department.label}"
id="plam1"
showRequired="#{bindings.Department.hints.mandatory}">
<af:panelGroupLayout id="pgl1" layout="horizontal">
<af:inputComboboxListOfValues id="DepartmentId"
popupTitle="Search and Select: #{bindings.DepartmentId.hints.label}"
value="#{bindings.DepartmentId.inputValue}"
model="#{bindings.DepartmentId.listOfValuesModel}"
columns="#{bindings.DepartmentId.hints.displayWidth}"
shortDesc="#{bindings.DepartmentId.hints.tooltip}"
required="#{bindings.DepartmentId.hints.mandatory}"
autoSubmit="true"
binding="#{backingBeanScope.BackingBean.departmentLov}"
valueChangeListener="#{backingBeanScope.BackingBean.onSelectDepartment}">
<f:validator binding="#{bindings.DepartmentId.validator}"/>
<af:convertNumber groupingUsed="false"
pattern="#{bindings.DepartmentId.format}"/>
</af:inputComboboxListOfValues>
<af:spacer width="10" height="10" id="s1"/>
<af:outputText value="#{bindings.DepartmentName.inputValue}" id="ot1"
partialTriggers="DepartmentId"
binding="#{backingBeanScope.BackingBean.DepartmentName}"/>
</af:panelGroupLayout>
</af:panelLabelAndMessage>
答案 0 :(得分:2)
回答核心问题(可以删除星号):是的,使用ADF Skinning。 一些例子:
.hideRequired af|selectOneChoice::label af|panelFormLayout::label-cell .AFRequiredIconStyle,
.hideRequired af|panelFormLayout::label-cell .AFRequiredIconStyle,
.hideRequired af|selectOneChoice::label .AFRequiredIconStyle
{
display:none ;
}
请注意,我们将 hideRequired 添加为组件的styleClass(您可以为其指定其他名称)。 您可能需要使用的是:
.hideRequired af|inputComboboxListOfValues::label .AFRequiredIconStyle
{
display:none;
}
答案 1 :(得分:1)
删除required
属性,仍然会为LOV激活验证。
但是,由于您将skipValidtion
设置为true
,因此模型级别验证也不会触发。
以下是如何实现必要的字段验证而不使用required =&#34; true&#34;或Jdeveloper 11.1.2。*或更高版本中的模型级验证,因为此解决方案不适用于早于JSF2.0的版本
在托管bean中创建验证器方法,或者如果要重用验证器,则为应用程序创建自定义验证器。
public void requiredFieldValidator(FacesContext facesContext, UIComponent uIComponent, Object object) {
if (null == object) {
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "This field can not be empty",
null));
}
else{
if(object.toString().trim().equals("")){
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "This field can not be empty",
null));
}
}
}
使用此方法作为您的lov验证器
<af:inputListOfValues label="Lov1" popupTitle="Search and Result Dialog" id="ilov1"
validator="#{pageFlowScope.mBean.emailValidator}"/>
更重要的是,要使验证器适用于空字段,请在web.xml中将javax.faces.VALIDATE_EMPTY_FIELDS
设置为true
<context-param>
<param-name>javax.faces.VALIDATE_EMPTY_FIELDS</param-name>
<param-value>true</param-value>
</context-param>