generic set通过SSJS访问Java对象中的字段

Mal*_*lin 1 java xpages xpages-ssjs

有没有办法通过SSJS以更灵活的方式访问Java对象上的字段?

因此,当我的Java对象存储在obj变量中时,我可以通过obj.created访问创建的字段.

但是,我会使我的解决方案更灵活,因此字段的名称将通过自定义控件上的属性定义提供.

我得到的字段的名称:

compositeData.fieldName
Run Code Online (Sandbox Code Playgroud)

我怎样才能把它弯曲成:

var field = compositeData.fieldName;
obj.????
Run Code Online (Sandbox Code Playgroud)

我试过了

obj.getField(field);
Run Code Online (Sandbox Code Playgroud)

(来源:https://www.tutorialspoint.com/java/lang/class_getfield.htm)

给我一个错误:

com.ibm.xsp.binding.javascript.JavaScriptValueBinding.getValue(JavaScriptValueBinding.java:132)

有人有建议吗?

Rob*_*son 6

您应该能够通过括号表示法访问对象属性:

obj.fieldName

是相同的

obj[compositeData.fieldName]

您可能还想查看可能允许您执行的java反射:

obj.get(compositeData.fieldName)

  • 请记住,默认Java策略会阻止Java反射.我需要对Watson Workspace Java SDK进行一些更改,请参阅https://openntf.org/main.nsf/project.xsp?r=project/Watson%20Work%20Services%20Java%20SDK/releases/54958F6AB453BEEF852581170033626B.另一个选择是让你的Java类扩展Map接口,如Tim Tripcony在他的NotesIn9 https://www.youtube.com/watch?v=6xUEceG7wlM中所示.(使用ODA,代码变得更容易,Tim不得不在他的课程中添加大量的ODA代码) (3认同)