ADF删除所需的星号

时间:2014-12-30 17:39:56

标签: oracle-adf jdeveloper

我的panelLabelAndMessage包含inputComboboxListOfValuesoutputText。 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>

2 个答案:

答案 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>