ajax - JSF2 使用 ajax 更新复合元素

标签 ajax jsf-2 rendering composite-component

有一个输入元素,我想在用户在那里输入内容后更新它。

输入元素:

<h:form id="form">
    <h:inputText value="#{message.message}"> 
        <f:ajax event="keyup" render="form:compElem"/> 
    </h:inputText> 
    <compositeOutputComponents:test2 id="compElem" message="#{message.message}"/>
</h:form>

这就是我的复合元素的样子:

<?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:ui="http://java.sun.com/jsf/facelets"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:composite="http://java.sun.com/jsf/composite">
  <h:head>
  </h:head>
    <h:body>
            <fieldset>
                <composite:interface>
                    <composite:attribute name="id"/>
                    <composite:attribute name="message" required="true"/>
                </composite:interface>
                <composite:implementation>
                    <span id="#{cc.attrs.id}">
                        <h:outputText value="#{cc.attrs.message}"/>
                    </span>
                </composite:implementation>
            </fieldset>
    </h:body>

我试图在 JSF Updating Composite Component (Primefaces) 中将 id 作为 Balus 传递给复合元素建议(我不使用 primefaces),但页面仍然会产生错误:“格式错误的 XML:更新期间:未找到 form:compElem”。当我使用非复合元素时,一切正常。

最佳答案

你需要#{cc.clientId}而不是 #{cc.attrs.id}在复合实现中。

<span id="#{cc.clientId}">

否则它将以<span id="compElem">结束。而不是 <span id="form:compElem">然后 JavaScript 无法再找到它,导致这个 malformedXML 错误。

修复该部分后,您就可以在 <f:ajax render> 中引用它了通常的方式就像您以相同的形式引用任何其他非复合组件一样:

<f:ajax ... render="compElem" />

或者如果您出于某种原因坚持指定绝对客户端 ID(但这是不必要的):

<f:ajax ... render=":form:compElem" />

另见:

关于ajax - JSF2 使用 ajax 更新复合元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18489057/

相关文章:

ajax - 标签库支持命名空间 : http://java. sun.com/jsf/core,但没有为名称定义标签:ajax

javascript - Three.js - 抗锯齿、渲染、fxaa

rendering - 解释预乘 alpha 的工作原理

php - 如何在完成 PHP 脚本执行之前接收 jQuery post 响应?

php - 如何使用带有ajax的POST方法使用多个数组将数据插入数据库:

java - 使用 ajax primefaces 渲染 panelgrid

java - 如何在 RichFaces 中对数据表中的行进行排序?

javascript - 使用 PHP 设置 Javascript 变量

javascript - 平滑页面加载的JS函数-订单问题

performance - MuPdf 库在从 pdf 页面渲染图像时比 xpdf/poppler 更快吗?