gpt4 book ai didi

ajax - 向 Ajax 事件监听器发送附加参数

转载 作者:行者123 更新时间:2023-12-04 04:54:43 24 4
gpt4 key购买 nike

我有一个 ajax 监听器,他应该重定向到项目 View 页面。
但是,由于我使用泛型类型作为模型,因此我想在我的通用数据表 Controller 中另外指定带有第二个参数的 View 是什么。
不幸的是,可以使用 在两种监听器方法之间进行选择。事件 有助于识别对象的参数,第二个参数让您有机会发送 自由参数但缺少事件。
模板 :

<p:dataTable value="#{aObj.objList}" var="item" ... selectionMode="single">

<p:ajax event="rowSelect" listener="#{aObj.viewItem}" />
<p:ajax event="rowSelect" listener="#{aObj.viewItem('myItemView?_id=')}" />

...
</p:dataTable>
Controller :
public void viewItem(SelectEvent event) {
// ...
}

public void viewItem(String viewUrl) {
// ...
}
我可以向 bean 添加额外的属性,但由于它是通用的,并且提供模型项并不会污染它。
有什么解决方法吗?

最佳答案

您可以在数据表中设置一个属性并在选择监听器中读取它。为此,请使用 <f:attribute name="..." value="..."/> .来自 documentation :

Constraints

Must be nested inside a UIComponent custom action.

Description

Locate the closest parent UIComponent custom action instance (...). If the associated component already has a component attribute with that name, take no action. Otherwise, call the isLiteralText() method on the argument value. If it returns true, store the value in the component’s attribute Map under the name derived above. If it returns false, store the ValueExpression in the component’s ValueExpression Map under the name derived above.



因此,采用您尝试在评论中设置的属性,您应该像这样使用它:

XHTML:
<p:dataTable value="#{aObj.objList}" var="item" .... selectionMode="single">

<f:attribute name="test" value="abc" />
<p:ajax event="rowSelect" listener="#{aObj.viewItem}" />

...
</p:dataTable>

听众:
public void viewItem(SelectEvent event) {
String test = (String) event.getComponent().getAttributes().get("test");
// ...
}

关于ajax - 向 Ajax 事件监听器发送附加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39143601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com