0

我不认为这是 AJAX 的 JSF 问题,因为我只有一个表单。

我查看了有关 Ajax 和 JSF 渲染内容的线程,并尝试了多种解决方案,但都没有成功。

任何人都看到我可能很明显错过了什么:-)

谢谢

索引.xhtml

<!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:ui="http://java.sun.com/jsf/facelets"
    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>Manual</title>
    <h:outputStylesheet name="style.css" library="css" />
</h:head>
<h:body>
    <div id="page">
        <h:form id="myform"> 
        <div class="header" >
            <h:graphicImage library="img" name="Logo.gif" alt="Logo"/>
            <h1>Manual</h1>
        </div>

            <div class="menu">
        </div>

        <div class="nav">

            <h:outputText value="Navigation 1"/><br/>
            <p:commandLink value="Chapter100" action="#{contentBean.BuildContent}" update="content" >
                <f:ajax process="@this" render=":content" />
            </p:commandLink>

                    <!-- Add NewLine between links --> 
                    <h:outputText value="&#10;" />
            </div>
            </h:form>
            <div class="mycontent">
                <h:panelGroup id="content">
                    <h:outputText value="#{contentBean.content}" >
            </h:outputText>
                </h:panelGroup>
            </div>
        </div>
    </h:body>
</html>

@ManagedBean(name="contentBean")
@ViewScoped
public class ContentBean implements Serializable{
    private List<String> lTocInfo = new ArrayList();

    private String content = "Steve Newer 002 Content";

    public String getContent() 
    {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public void BuildContent() throws Exception
    {
        this.setContent("Steve made it back from database");
    }     
}
4

2 回答 2

1

不要 <f:ajax>在 primefaces 按钮中使用,因为默认情况下它是一个 ajax 请求(除非你想关闭 ajax 请求,你可以将 ajax 属性设置为 false)。您可以使用更新和处理属性。

于 2013-05-25T08:33:49.373 回答
0

我相信要解决这个问题,您还可以在 ajax 中使用链接中的以下代码:

<p:commandLink value="Chapter100" action="#{contentBean.BuildContent}">
                <f:ajax execute="@form" event="blur" render="content" />
</p:commandLink>
于 2013-05-26T03:54:04.743 回答