在提交a4j:commandlink时,我得到该操作的随机html,而不是JSF中的html



我正在使用SEAM - JSF框架

我有以下a4j命令链接在我的xhtml页面。

<a4j:commandLink id="rateImage" action="#{ratingSessionAction.rateImage}" oncomplete="getNewImageForSlider();"/>

当我在清除浏览器历史记录后第一次点击这个链接时,我得到以下html

 <?xml version="1.0"?>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<link class="component"
    href="/abc/a4j/s/3_3_3.Finalorg/richfaces/renderkit/html/css/basic_classes.xcss/DATB/eAELXT5DOhSIAQ!sA18_"
    rel="stylesheet" type="text/css" />
<link class="component"
    href="/abc/a4j/s/3_3_3.Finalorg/richfaces/renderkit/html/css/extended_classes.xcss/DATB/eAELXT5DOhSIAQ!sA18_"
    media="rich-extended-skinning" rel="stylesheet" type="text/css" />
<script
    src="/abc/a4j/g/3_3_3.Finalorg.ajax4jsf.javascript.AjaxScript"
    type="text/javascript">
</script>
<script
    src="/abc/a4j/g/3_3_3.Finalorg/ajax4jsf/javascript/scripts/form.js"
    type="text/javascript">
</script>
<script
    src="/abc/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/skinning.js"
    type="text/javascript">
</script>
</head>
<body>
    <meta name="Ajax-Update-Ids" content="" />
    <span id="ajax-view-state"><input type="hidden"
        name="javax.faces.ViewState" id="javax.faces.ViewState"
        value="" />
    </span>
    <meta id="Ajax-Response" name="Ajax-Response" content="true" />
    <span id="org.ajax4jsf.oncomplete">getNewImageForSlider();</span>
</body>
</html>

我故意从viewstate隐藏字段中删除值以减少文章长度

谁能告诉我为什么会发生这种情况,以及如何克服它?

Thanks in advance

Richfaces (a4j)总是返回一个完整的html响应。返回后,它将使用ajax-update-id将响应分成几个部分,并将它们放置在具有呈现器属性定义的id的位置。

你没有指定任何渲染,因为只有你的js应该在完成时执行。

您可以在a4j请求期间直接获取新图像并使用渲染器(您的页面需要为此准备一个img标记和随机src,我假设),或者您可以在oncomplete回调中这样做,并创建一个新的img标记并将其放置在自己的位置。

第二种方法可能比较棘手,因为服务器状态不会在下一个请求中对齐,假设您在seam中使用会话,例如

相关内容

  • 没有找到相关文章

最新更新