Jsf 使用p:commandButton时不进行导航

Jsf 使用p:commandButton时不进行导航,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,这是一个用于获取名字和姓氏的Facelets文件,之后将转到另一个Facelets文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w

这是一个用于获取名字和姓氏的Facelets文件,之后将转到另一个Facelets文件:

<?xml version="1.0" encoding="UTF-8"?>
<!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:p="http://primefaces.org/ui">

    <h:head><title>User Form</title></h:head>

    <h:body>
    <h:form>
        <h:panelGrid columns="2">
            <p:graphicImage value="resources/images/image.jpg" width="50%"/>

            <p:panelGrid columns="2" width="50%">
                <f:facet name="header">
                    User Form
                </f:facet>
                <h:outputLabel for="firstname" value="Firstname: *"/>
                <p:inputText id="firstname" value="" label="Firstname"/>

                <h:outputLabel for="surname" value="Surname: *"/>
                <p:inputText id="surname" value="" required="true" label="Surname"/>

                <f:facet name="footer">
                    <p:commandButton type="button" value="Save" icon="ui-icon-check" style="margin:0" action="construction"/>
                </f:facet>
            </p:panelGrid>
        </h:panelGrid>
    </h:form>
</h:body>
</html>

用户表单
用户表单

当我按下“保存”按钮时,我希望转到
构造.xhtml
,但什么也没发生。这是如何造成的,我如何解决它?

当您使用
commandButton
时,必须执行以下操作:

<p:commandButton  value="Save" icon="ui-icon-check" style="margin:0" action="#{someBean.navigate}"/>

这意味着您必须使用
managedbean


在您的情况下,您必须使用
按钮
而不是
命令按钮

这是实际的代码吗?因为a)您正在使用
命令按钮进行导航,b)您的
输入文本没有支持值。也就是说,试着使用
h:commandButton
,如前所述。谢谢@mabi,当用户按下保存按钮时,正在构建的
页面必须出现,因为正如您所说,它不完整,而且只是本程序的开始。您究竟为什么使用
type=“button”
?您绝对确定吗?你熟悉基本的HTML和HTTP吗?您是否检查了HTTP流量监视器和服务器日志?当您删除它时,它应该开始触发ajax请求,而不是什么都不做。ajax请求是否会反过来触发导航只是第二个问题。这里有一个带有
required=“true”
的输入,没有任何faces消息处理程序。最后,一个异常!一个好的例外本身就是一个完整的答案。然而,根据目前发布的代码,我无法解释这一点;您没有运行问题中所示的代码。