当前位置: 首页 > 知识库问答 >
问题:

如何消除JSF/Primefaces中无效组件的高亮显示

王旺
2023-03-14

我用的是PrimeFaces3.5。2,Mojara 2.1。2.我有一个xhtml主页面和一个对话框。下面是一个简单的例子

<h:form>
   <p:commandButton id="btn1" oncomplete="dlg.show()" update="dlg" process="@form"/>
</h:form>

   <p:dialog id="dlg" widgetVar="dlg">
      <h:form>
         <p:tabView id="tabview" activeIndex="..always 0 ...">
           <p:tab id="tab1">
             <p:panelGrid>
               <p:inputText id="input1" value="#{myBean.integer}"/>

             p:selectOneMenue is rendered wrong, if the dialog is reopened.
               <p:selectOneMenu id="select" value="#{myBean.listVal}" filter="true" style="width:100%">
                 <p:selectItems value="#{myBean.list}" />
               </p:selectOneMenu>
               <p:commandButton action="#{myBean.ok}" value="ok" oncomplete="..." update="dlg" process="@form"/>
               <p:commandButton action="#{myBean.cancel}" value="cancel"  update="dlg" process="@form"oncomplete="dlg.hide()"/>
             <p:panelGrid>
           </p:tab>
           <p:tab id="tab2">
            ...
           </p:tab>
         </p:tabView>
      </h:form>
   </p:dialog>   

管理豆:

@ManagedBean
@SessionScoped
class MyBean {
   Integer integer;
   String listVal;

   public Integer getInteger() { ... }
   public void setInteger (Integer i) { ... }
   public void ok() { ... }
   public void cancel() { ... }

   public List<SelectItem> getList() { ... }
   public getListVal () { ... } 
   public setListVal (..) { ... }

}

如果我打开对话框,在输入栏(输入1)中写入错误的内容,例如文本而不是数字,然后单击“确定”,那么输入将无效并标记为红色。我用取消或关闭按钮关闭对话框。如果我重新打开对话框,输入字段仍然标记为红色。我不想要这种行为。

另一个问题:在无效状态下“选择”-Primefaces中的组件经常更改大小。如果我将p:selectOneMenu替换为h:selectOneMenu,则组件的大小正确。

我的问题是如何更改JSF/Primefaces的状态,以便在重新打开对话框后JSF将处于“验证”状态,并且JSF不会显示突出显示。

我试图改变组件状态setValid(true)的所有组件在myBean.cancel它没有帮助但是。类似于此问题如何在自定义多字段验证器中标记其他组件无效

谢谢,红色边界的问题消失了。但我还有一个非常类似的问题。请参阅:p:SelectOneMenue在发生转换器/验证器错误时更改Primefaces/JSF中的大小

共有1个答案

东方琪
2023-03-14

对于重置输入字段,请考虑使用Omniface。Omniface为此提供了ResetInputAjaxActionListener。更多信息请参见此处:http://showcase.omnifaces.org/eventlisteners/ResetInputAjaxActionListener.

更新1

由于PrimeFaces 3.4,您也可以使用

更新2

由于JSF2.2,您还可以使用

 类似资料:
  • 问题内容: 如何使用JSF显示/隐藏组件?我目前正尝试在javascript的帮助下做同样的事情,但没有成功。我不能使用任何第三方库。 谢谢| 阿比 问题答案: 通常,您需要通过其clientId获得该控件的句柄。本示例使用带有请求范围绑定的JSF2 Facelets视图来获取另一个控件的句柄: 确切的操作方式取决于您正在使用的JSF版本。有关较早的JSF版本,请参见此博客文章:JSF:使用组件标

  • 现在我想知道如何使用ITextSharp移除那些高亮显示的矩形。 它删除了所有的注释,但我想删除特定的注释。假设我在第1页突出了美国和专利申请出版物,现在我想单独删除美国。我会通过美国的文本。 我引用了这个答案。其中,要获得突出显示的文本,需要获得存储在突出显示注释中的坐标(存储在QuadPoints数组中),并且需要使用这些坐标解析页面内容中位于这些坐标处的文本。

  • 我在Word文档中突出显示了段落,我必须从每个段落的第3到第5个字符中删除突出显示。 通过搜索集合r=ActiveDocument中突出显示的范围。在VBA中,可以完美地找到文本段。 错误出现在。 编译错误:参数数量错误或无效的属性分配。 danI如何在范围内正确指定第3到第5个字符的子范围?谢谢你的帮助。

  • 葡萄牙语:java.lang.IllegalArgumentException jsf composite componente composto jsf com dataTable do primefaces tabela-padrao.xhtml 使用组件/Usando o组件 我有一个例外/Ocorreu esta Exceção! 葡萄牙人:Oque estou fazendo de er

  • 我在eclipse中有一个使用jsf的动态web应用程序。我用“New java server faces(jsf)page(xhtml)”模板创建了一个jsp页面,希望只显示一个h:inputText,但当我在tomcat中运行应用程序时,inputText没有显示出来。 有什么问题?

  • 本文向大家介绍Element Table的row-class-name无效与动态高亮显示选中行背景色,包括了Element Table的row-class-name无效与动态高亮显示选中行背景色的使用技巧和注意事项,需要的朋友参考一下 Element UI 的Table组件踩坑记: (1)参数row-class-name无效的坑:官方文档给出了如下代码:   但是我使用后并没有出现预初想要第一行高