f:或p:带模板的ajax和JSF不起作用 - Primefaces

时间:2014-01-05 01:28:18

标签: ajax jsf layout primefaces templating

我是新来的:) 我的第一个使用JSF编写的网络应用程序之一遇到了问题。 我写了一个简单的模板,它看起来像这样:

<?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:p="http://primefaces.org/ui"
  xmlns:ui="http://java.sun.com/jsf/facelets">

<h:head>
<p:layout fullPage="true">
    <p:layoutUnit position="north" header="North - header" style="font-size: 15px;">
        <h:form>
            <ui:include src="header.xhtml"/>
        </h:form>
    </p:layoutUnit>

    <p:layoutUnit position="west" header="West - menu" style="font-size: 15px;">
        <h:form>
            <ui:include src="menu.xhtml"/>
        </h:form>
    </p:layoutUnit>

    <p:layoutUnit position="center" header="Center - content" style="font-size: 15px;">
        <h:form id="contentForm">
            <ui:insert name="content"/>
        </h:form>
    </p:layoutUnit>

    <p:layoutUnit position="east" header="East - nothing" style="font-size: 15px;">
    </p:layoutUnit>

    <p:layoutUnit position="south" header="South - footer" style="font-size: 15px;">
        <ui:include src="footer.xhtml"/>
    </p:layoutUnit>
</p:layout>
</h:head>

<h:body>
</h:body>
</html>

在另一个文件(obrazek.xhtml)中我写了这段代码:

<?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:p="http://primefaces.org/ui"
  xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core">

<h:head>
<title>Simple JSF Facelets page</title>
</h:head>

<h:body>
<ui:composition template="template.xhtml">
    <ui:define name="content">
        <h:form id="PHOTOS">
            <p:panelGrid columns="2">
                <h:commandLink action="#{pic.addValue1}">
                    <p:graphicImage url="resources/images/1.png">
                        <p:ajax update="wynik1" event="click"/>
                    </p:graphicImage>
                </h:commandLink>
                <h:commandLink action="#{pic.addValue2}">
                    <p:graphicImage url="resources/images/2.png">
                        <p:ajax update="wynik1" event="click"/>
                    </p:graphicImage>
                </h:commandLink>
                <h:outputText value="Obrazek 1: #{pic.val1}" id="wynik1"/>
                <h:outputText value="Obrazek 2: #{pic.val2}" id="wynik2"/>
            </p:panelGrid>
        </h:form>
    </ui:define>
</ui:composition>
</h:body>

</html>

我想在“content”primefaces layoutUnit中插入一些代码。 IDEA:它必须是2张图片,如果我点击其中一张,AJAX应该使用h:outputText显示ManagedBean的值。 (它总是为值增加+1 :)) 问题是:如果我不在temprazek.xhtml中添加模板**一切正常,但如果我添加:

<ui:composition template="template.xhtml">
    <ui:define name="content">
CODE FROM FORM "PHOTOS" (the one about I called upper that "is no templated"**)
    </ui:define>
</ui:composition>
当我点击一些图片时没有任何反应。只是“#”被添加到我的网址中,它看起来像是:

http://localhost:8080/obrazek.xhtml# 

我的ManagedBean也是:

@ManagedBean(name = "pic", eager = true)
@SessionScoped
public class PictureBean {
private int val1;
private int val2;

public void addValue1(){
    val1 += 1;
}

public void addValue2(){
    val2 += 1;
}
GETTERS AND SETTERS FOR VAL1 VAL2
}

我已经翻遍所有的网页寻找答案但是毫无用处。

这里有人可以帮助我吗? :) 请原谅这么长的帖子而不是彩色语法,必须弄清楚“怎么做”,首先:D

0 个答案:

没有答案