gpt4 book ai didi

java - 实现服务器端值更改事件/监听器

转载 作者:行者123 更新时间:2023-11-30 10:59:15 24 4
gpt4 key购买 nike

我正在尝试实现监听器来跟踪值。我在看 Tony McGuckin 的 xSnippet http://openntf.org/XSnippets.nsf/snippet.xsp?id=server-side-value-change-events-listeners但它失败了。当我粘贴代码时,它在页面上失败了。看起来java代码有问题,但我在这里猜测。 “Pizza”评论下面的所有内容都被注释掉了,我的 Java 不够聪明,无法修复它。

package com.ibm.xsp.beans;

import javax.faces.component.UIComponent;
import javax.faces.event.ValueChangeEvent;

/*
* @author Tony McGuckin, IBM
*/
public class ChangeRequestBean {

public ChangeRequestBean (){}

public void valueChangeListener(ValueChangeEvent valueChangeEvent){

// Note: valueChangeListener's are fired during the PROCESS_VALIDATIONS phase
// but only after any binded validator(s) on the component succeeds...
UIComponent c = valueChangeEvent.getComponent();
System.out.println("Value changed component: " + c.getId());
System.out.println("Old value: " + valueChangeEvent.getOldValue());
System.out.println("New value: " + valueChangeEvent.getNewValue());

// do something useful...
// perform second level check with a service...
// order a pizza using REST... whatever!
/*
if(ChangeRequestService.doesNotApproveThisNewlyValidatedValue(c.getId(), valueChangeEvent.getNewValue()){
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(
c.getClientId(context), new FacesMessage(
FacesMessage.SEVERITY_ERROR,
ChangeRequestService.getMessage(),
ChangeRequestService.changeRequest.getSummary()
)
);
// failover to the RENDER_RESPONSE phase...
FacesContext.getCurrentInstance().renderResponse();
}
*/
}

} // end ChangeRequestBean

如果有人有现场跟踪机制,他们会愿意分享这将解决我的问题。关于此的所有代码博客文章都已有几年历史了,我在实现时遇到了一些麻烦。

[编辑]

如果有不同的话,我正在运行 Domino 9.0.1 fp3。

最佳答案

注释中的代码不是真正有效的代码。它只是用来了解在那里可以做什么。

ChangeRequestService保留一个虚构的 Java 类,该类使用方法 doesNotApproveThisNewlyValidatedValue 检查新值并提供错误消息字符串。

仅出于演示目的,此类可能如下所示:

package com.ibm.xsp.beans;

public class ChangeRequestService {

public static boolean doesNotApproveThisNewlyValidatedValue(String id, Object newValue) {
if (newValue != null && newValue.toString().length() == 3) {
return true;
}
return false;
}

public static String getMessage() {
return "Value can't be 3 characters long ... bla ... bla ...";
}

}

“pizza”下面的代码可以是

    if (ChangeRequestService.doesNotApproveThisNewlyValidatedValue(c.getId(), valueChangeEvent.getNewValue())) {
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(c.getClientId(context), new FacesMessage(ChangeRequestService.getMessage()));
// failover to the RENDER_RESPONSE phase...
FacesContext.getCurrentInstance().renderResponse();
}

只要提交的值正好是 3 个字符长,它就会显示消息“值不能是 3 个字符长 ... bla ... bla ...”。

我知道这不是您要找的。

有一些博客使用 Tony 的代码作为字段跟踪的起点,例如:

在那里寻找想法和代码并实现您自己的现场跟踪。

关于java - 实现服务器端值更改事件/监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31950942/

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