我想創建一個自定義消息渲染器來將h:消息呈現爲'p'html元素,而不是作爲'span'元素。它涉及以下消息標記:渲染JSF h:帶p元素而不是span的消息
<h:message id="firstNameErrorMsg" for="firstname" class="error-msg" />
我寫了下面的代碼,但這只是渲染一個空'p'元素。我想我必須複製原始組件中的所有屬性和文本,並將其寫入作者。但是,我不知道在哪裏可以找到所有的東西,而只是替換標籤似乎有很多工作要做。
有沒有更好的方法讓h:message標記呈現爲'p'元素?
代碼:
@FacesRenderer(componentFamily = "javax.faces.Message", rendererType = "javax.faces.Message")
public class FoutmeldingRenderer extends Renderer {
@Override
public void encodeEnd(final FacesContext context, final UIComponent component) throws IOException {
ResponseWriter writer = context.getResponseWriter();
writer.startElement("p", component);
writer.endElement("p");
}
}
BalusC嗨, 感謝對我的問題的解決你所提供的可能性。我已經使用了第一個你提交的,主要是因爲它是最快的,也是最容易實現的。 我不得不合作的各種樣式表的巨大尺寸,以及業主不願意讓我改變它們的想法也使我無法繼續使用CSS選項。 此外,我已經使用了比OmniFaces更多的其他jsf標籤庫,因此無法真正使用OmniFaces選項。 再次感謝和問候, Kees –
OmniFaces不是一個組件庫,而是一個實用程序庫,實質上與每個組件庫兼容。您可以將它與PrimeFaces,RichFaces,ICEFaces等結合使用。 – BalusC