0

我正在尝试通过 javascript 调用 primefaces commanlink,并想知道它是否成功执行,如果成功,我需要获取回调函数发送的值。我正在捕获 commandlinke 的返回值,它是一堆 javascript。如何在我的 senario 中获取 args(topicComment) 值。我想我可以通过设置更多隐藏字段来解决问题,但我想看看如何直接获取它。

Javascript

$('.postButton').livequery("click", function (){
        var comment_content = $(this).parent().siblings().children('textarea').val();
        $('#topic_comment').val(comment_content);
        var object=$('#postCmdLink').click();
        var output;
        for (property in object) {
              output += property + ': ' + object[property]+'; ';
            }
            console.log(output);
}

服务器端

public void addComment(){
        .................................
        context = RequestContext.getCurrentInstance();
        context.addCallbackParam("topicComment", topicBean.getTopicCommentVO().getTopicCommentGuid());

}

4

3 回答 3

1

CommandLink而不是通过jQuery点击:

var object=$('#postCmdLink').click();

使用 Primefaces AjaxAPI 调用 ajax 并注册回调获取结果:

PrimeFaces.ajax.AjaxRequest({
         formId:'userForm'
         ,source:'userForm'
            ,process:'userForm'
         ,update:'msgs'
         ,params:{
            'param_name1':'value1',
            'param_name2':'value2'
         }
          ,oncomplete:function(xhr, status, args) {alert('Done');}  
        });

Primefaces 用户文档 3.1.1 部分7.2 Ajax API第 454 页。

于 2012-09-01T16:01:14.630 回答
0

我不太明白你想对返回的值做什么,但你可以使用 oncomplete 在 JavaScript 中访问它。

支持豆:

public class TestBean
{
    public void test()
    {
        RequestContext.getCurrentInstance().addCallbackParam("name", "value");
    }
}

JSF:

<p:commandButton action="#{testBean.test()}" oncomplete="test(xhr, status, args)" value="test" />
<script type="text/javascript">
    function test(xhr, status, args)
    {
        if (args.name)
        {
            alert(args.name);
        }
    }
</script>
于 2012-09-01T12:26:41.887 回答
0

INMO

如果您想确保p:commandLink成功执行,只需将一些 js 代码放入onsuccess

像这样的东西

<p:commandLink onsuccess="alert('yes!')" id="myId"....
于 2012-08-31T21:23:15.107 回答