PF向导不会进入下一步?

时间:2013-08-08 19:36:43

标签: java jsf primefaces wizard

我已实施以下向导:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    xmlns:c="http://java.sun.com/jstl/core">

<h:head>
    <meta charset="utf-8" />
</h:head>

<h:body>

    <h:form id="wizard" enctype="multipart/form-data">
        <p:wizard id="wiz" widgetVar="wiz">


            <p:tab id="productWizardBasicTab"
                title="#{lang['product.TabBasicProduct']}">
                <p:panel header="#{lang['product.header']}">
                    <h:panelGrid id="basic" columns="2" columnClasses="label, value"
                        styleClass="grid">
                        <h:outputText value="#{lang['product.productname']}" />
                        <p:inputText id="productName" required="true" label="" value="" />

                        <h:outputText value="#{lang['product.description']}" />
                        <p:inputText id="productDescription" required="true" label=""
                            value="" />

                        <h:outputText value="#{lang['product.tags']}" />
                        <p:inputText id="productTags" required="true" label="" value="" />

                        <h:outputText value="#{lang['product.price']}" />
                        <p:inputText id="productPrice" required="true" label="" value="" />

                    </h:panelGrid>
                </p:panel>
            </p:tab>

            <p:tab id="productWizardImageTab"
                title="#{lang['product.TabProductImages']}">
                <p:panel header="#{lang['product.UploadImageHeader']}">

                </p:panel>
            </p:tab>

            <p:tab id="productWizardSpecialTab"
                title="#{lang['product.TabSpezialization']}">

            </p:tab>

            <p:tab id="productWizardTagTab"
                title="#{lang['product.TabTags']}">

            </p:tab>

            <p:tab id="productWizardTagTab"
                title="#{lang['product.ShareTab']}">

            </p:tab>

        </p:wizard>
    </h:form>

</h:body>

</html>

我的问题是,这个向导在tomcat 7.0 server上启动时没有做出反应。我已经实现了PF 3.5的lib并使用jsf 2.2.0

感谢巫师的每一个暗示!

3 个答案:

答案 0 :(得分:1)

虽然我不完全确定PF3.5支持JSF2.2,但以下摘录会导致表单上的验证失败。

<p:inputText id="productName" required="true" label="" value="" />

value=""表示该值未绑定到任何支持bean属性,并且在此情况下,向导将无法继续。我知道这很奇怪,但该组件希望能够将该组件的值更新为另一个组件。如您的表单所示,只需在该文本字段中输入值而不对其他内容进行更新仍将导致验证错误(由于required="true")。

因此,您需要将这些字段绑定到可更新的内容,最好是在辅助bean上。

答案 1 :(得分:1)

首先,Primefaces 3.5不适用于jsf 2.2.0。如果您看到tomcat控制台,您可以找到答案。第二件事是使用backing bean属性绑定值。 使用jsf 2.1.22。或者以上(不是2.2.0或更高版本),使用primefaces 3.5来使primefaces向导工作。

如果要继续使用jsf 2.2.0或更高版本,请使用primefaces 4.0-SNAPSHOT。

答案 2 :(得分:1)

问题可能是,idwidgetVar使用相同的p:wizardwiz.nextStep()。有些浏览器会混淆它们,然后尝试在id而不是widgetVar上执行{{1}},这会导致某种“nextStep()不是函数”错误。