我可以覆蓋的<p:message ../>
的默認實現總是隱有display="text"
而不是時間完全打字出來的?重寫JSF Primefaces消息變量
<p:message for="hotelName" display="text" />
我可以覆蓋的<p:message ../>
的默認實現總是隱有display="text"
而不是時間完全打字出來的?重寫JSF Primefaces消息變量
<p:message for="hotelName" display="text" />
你可以延長該PrimeFaces' MessageRenderer
。只需重寫encodeEnd()
方法,即在調用super方法之前設置默認屬性。
這裏是一個自包含開球例如:
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);
}
}
您需要在faces-config.xml
登記如下(不,註釋魔術不會重寫現有的渲染它是由本身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;
}
創建複合部件由對方的回答的建議是不完全微不足道的。
我會爲此創建一個Facelet組合組件。
只是一個想法,而不是壓倒一切的可能(也許不是)因爲你的麻煩,如果原來的
Daniel 2012-02-12 09:55:01