gpt4 book ai didi

java - actionListener 不起作用,但该方法起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:28 25 4
gpt4 key购买 nike

我已经测试了向数据库添加值的方法,它工作正常。但是,当我尝试将该方法用作命令按钮中的 actionListener 时,它不起作用。谁能解释一下我错了什么?这是方法:

public void addToNetwork() {

MindmapNode currentNode = this.selectedNode;

this.user.setConnections( this.user.getConnections() + "-" + currentNode.getLabel() );
this.userConn = Arrays.asList(this.user.getConnections().split("-"));
this.setUserdetails( this.user );
}

这是 xhtml:

<p:mindmap value="#{mmBean.root}" style="width:100%;height:600px" id="mindmap">
<p:ajax event="select" listener="#{mmBean.onNodeSelect}" immediate="true"
id="oneClick" oncomplete="options.show()" />
/p:mindmap>


<p:dialog widgetVar="options">

<p:panelGrid id="optionspanel" columns="2">
<h:outputText value="Add this user to your network?"/>
<p:commandButton value="Add" update="mindmap" actionListener="#{mmBean.addToNetwork}" onclick="options.hide()" id="btnAdd"/>
</p:panelGrid>

</p:dialog>

这是 onNodeSelect 的方法:

public void onNodeSelect(SelectEvent event) {
MindmapNode node = (MindmapNode) event.getObject();
this.setSelectedNode(node);
}

请注意,我很容易在他们点击时强制添加,但我最终也想为用户提供一系列其他选项。

这可以通过将 addToNetwork 中的属性设置为 true 来实现吗?基本上我在想像 remoteCommand 这样的东西?我尝试让第一个命令将连接属性设置为 true,然后如果该属性设置为 true,则 remoCommand 调用带有 if 循环的方法进行连接。那没有用。

我怀疑问题在于在对象中维护哪个节点是选定节点,但我不确定。任何帮助都会很棒!

编辑:答案是将节点标签存储在数据库中,然后从那里再次访问它。很简单,真的。我认为对象在设置 selectedNode 值和被调用之间的某个时间被销毁,但我对此不是 100% 确定。

最佳答案

action 方法相反,actionListener 方法必须采用ActionEvent 参数。

你有两个选择:

  1. 改用action

    <p:commandButton ... action="#{mmBean.addToNetwork}" />
  2. 添加该参数,即使您从未使用过它。

    import javax.faces.event.ActionEvent;

    // ...

    public void addToNetwork(ActionEvent event) {
    // ...
    }

另见:

关于java - actionListener 不起作用,但该方法起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13842704/

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