【问题标题】:how execute a ajax after some js function in jsf2.0如何在jsf2.0中的一些js函数之后执行ajax
【发布时间】:2011-05-21 14:40:27
【问题描述】:

我经常使用,但我有这个问题。 如果有一个其操作是删除某个实体,但我想通知单击此命令的用户链接一个 javascript 函数确认(str);如果 confirm() 答案为假,则不会触发 ajax 函数。所以我开始使用 jsf.ajax.request 函数;我的代码是这样的。

<h:commandLink  value="ajax"  onclick="return ask(this,event,null,'page');" actionListener="#{test.ajax}"/>
<h:inputText value="#{test.page}" id="page"/>

这是我的javascript代码

function ask(element,event,exec,target){
    if(confirm("are you ready to delete it"))
    {
        try{
            jsf.ajax.request(element,event,{execute:exec,render:target});
        }catch(ex){
            alert(ex);
            return false;
        }
    }else
        return false;
}

,但它可以成功执行,但我发现它不是ajax。支持bean的其他值也更新了! 如果某人可以告诉我!心存感激!

【问题讨论】:

  • 请在发送到浏览器时显示您的标记和代码(使用“查看源代码”),这样我们就不必弄清楚生成的 HTML 会是什么样子。毕竟,这是 JavaScript 会看到的。

标签: javascript ajax function jsf-2


【解决方案1】:

您无需接管&lt;f:ajax&gt; 的工作。只需在 onclick 中返回即可。

<h:commandLink value="ajax" action="#{test.ajax}" onclick="return confirm('Are you sure?')">
    <f:ajax execute="@this" render="page" />
</h:commandLink>
<h:inputText value="#{test.page}" id="page"/>

并使用action 而不是actionListener。您可以在那里返回nullvoid

【讨论】:

  • 谢谢!你是对的,但在渲染中似乎不是“@page”而是“page”。执行你还应该添加“page”dom对象,或者你只能执行一次ajax。
  • 是的,抱歉,我的意思是输入 page 而不是 @page
  • 我能问你一个关于 JSF 复合组件的问题吗?我写了一个复合组件,其中包含一个 并且它有一个渲染值,我给了它一个复合:属性参数。但是当我使用这个组件时,控制台给了我一个结果 javax.faces.FacesException: contains an unknown id 'tableview'。我确信我有一个在外部页面中调用 tableview 的 id。coutd 你告诉我解决方案?谢谢!
【解决方案2】:

我已经解决了我的问题。那是因为我不太了解jsf.ajax.request。如果我想在后台调用actionListener,我还要使用要执行其所有者--dom 对象的actionListener

【讨论】:

  • 我也想知道这种情况;我们可以用 解决这个问题吗?
猜你喜欢
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多