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

标签 java xpages

我正在尝试实现监听器来跟踪值。我在看 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/

相关文章:

java - Android - 如何在更改 Activity 后保存复选框状态(选中/未选中)

java - 异步任务 : Implementing executeOnExecutor() thread class in AudioTrack

file-upload - XPages POI4Xpages 下载到网络位置

java - 由 XPages 中的 : java. lang.NoClassDefFoundError: org/apache/log4j/Logger 引起

xpages - 如何使用 SSJS 从 xpage 中的文档中获取所有字段名称?

java - 如何在执行代码时刷新 src/main/resources 文件夹?

java - mvn clean install 不会在目标文件夹中生成 jbehave 故事文件

java - 防止 Int 被减去

ssl - Xagent 充当在 SSL 环境中提供非 SSL 数据的代理

xpages - 将网站文档与 XPage 结合使用 - 如何正确设置?