我正在使用向导组件。导航栏位于底部,但我的老板要我把它放在向导的顶部,我认为这是一个属性或标签直接进行,但我一直在审查文档,我应该是错的(我只是找到了showNavBar标签)。
有没有办法在没有css或jquery的情况下做到这一点? (我们在使用某些组件时在应用程序设置css中遇到一些问题,所以我想避免它)。
非常感谢
答案 0 :(得分:2)
您可以通过以下两种方式之一实现这一目标:
通过扩展WizradRenderer
,您可以更改编码的顺序。
在encodeContent(facesContext, wizard);
encodeNavigators(facesContext, wizard);
之前调用public class ExNavWizardRenderer extends org.primefaces.component.wizard.WizardRenderer{
@Override
protected void encodeMarkup(FacesContext facesContext, Wizard wizard) throws IOException {
ResponseWriter writer = facesContext.getResponseWriter();
String clientId = wizard.getClientId(facesContext);
String styleClass = wizard.getStyleClass() == null ? "ui-wizard ui-widget" : "ui-wizard ui-widget " + wizard.getStyleClass();
writer.startElement("div", wizard);
writer.writeAttribute("id", clientId, "id");
writer.writeAttribute("class", styleClass, "styleClass");
if(wizard.getStyle() != null) {
writer.writeAttribute("style", wizard.getStyle(), "style");
}
if(wizard.isShowStepStatus()) {
encodeStepStatus(facesContext, wizard);
}
// encode the navigators before the content
if(wizard.isShowNavBar()) {
encodeNavigators(facesContext, wizard);
}
encodeContent(facesContext, wizard);
writer.endElement("div");
}
}
所以它非常简单,扩展自定义渲染器,更改调用顺序。
faces-config.xml
更新<render-kit>
<renderer>
<component-family>org.primefaces.component</component-family>
<renderer-type>org.primefaces.component.WizardRenderer</renderer-type>
<renderer-class>com.projectPackage.ExNavWizardRenderer</renderer-class>
</renderer>
</render-kit>
document.ready
在您的$('.ui-wizard-step-titles').after($('.ui-wizard-navbar'))
中,您可以更改DOM,例如,这与渲染器的操作相同:
{{1}}