将向导导航栏置于最高位置

时间:2014-06-27 07:15:27

标签: primefaces navbar wizard

我正在使用向导组件。导航栏位于底部,但我的老板要我把它放在向导的顶部,我认为这是一个属性或标签直接进行,但我一直在审查文档,我应该是错的(我只是找到了showNavBar标签)。

有没有办法在没有css或jquery的情况下做到这一点? (我们在使用某些组件时在应用程序设置css中遇到一些问题,所以我想避免它)。

非常感谢

1 个答案:

答案 0 :(得分:2)

您可以通过以下两种方式之一实现这一目标:

1 - 扩展WizardRenderer

通过扩展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

2 - jQuery

在您的$('.ui-wizard-step-titles').after($('.ui-wizard-navbar')) 中,您可以更改DOM,例如,这与渲染器的操作相同:

{{1}}