2012-02-12 5 views

答えて

4

PrimeFacesのMessageRendererを拡張することができます。スーパーメソッドを呼び出す前にデフォルト属性を設定するencodeEnd()メソッドをオーバーライドするだけです。ここで

は自己含有キックオフの例です:

あなたは次のように faces-config.xmlに登録する必要が
package com.example; 

import java.io.IOException; 

import javax.faces.component.UIComponent; 
import javax.faces.context.FacesContext; 

import org.primefaces.component.message.MessageRenderer; 

public class CustomMessageRenderer extends MessageRenderer { 

    @Override 
    public void encodeEnd(FacesContext facesContext, UIComponent component) throws IOException { 
     component.getAttributes().put("display", "text"); // You might want to check first if it isn't already set. 
     super.encodeEnd(facesContext, component); 
    } 

} 

(なし、注釈の魔法は、それ自体でXMLによって登録されている既存のレンダラをオーバーライドでは動作しません、そのXMLが絶対に必要です):

<render-kit> 
    <renderer> 
     <component-family>org.primefaces.component</component-family> 
     <renderer-type>org.primefaces.component.MessageRenderer</renderer-type> 
     <renderer-class>com.example.CustomMessageRenderer</renderer-class> 
    </renderer> 
</render-kit> 

しかし、簡単にはちょうどアイコンを非表示にするCSSの少しで投げることであろう。 <p:message>forターゲットが同じ複合内に含まれていないため、他の回答によって示唆されるように複合コンポーネントの作成

.ui-message-error-icon { 
    display: none; 
} 

は正確に些細なことではありません。

0

私はFacelet Composition Componentを作成するだけです。

関連する問題