查看数据源 returns 个条目,即使用户无权访问到期读者字段
View datasource returns entries even user has no access to due readers fields
我遇到了非常奇怪的行为,我无法解释,但我需要解释。在 Xpage 上,我嵌入了使用视图数据源和相应的中继器创建的视图。现在我发现,该视图数据源 returns 所有视图条目,即使那些用户也无法访问应有的访问控制(读者字段)。在重复控件中,我收到 NotesXSPViewEntry.getDocument() nullPointer 错误,因为 NotesXSPViewEntry returns null for getDocument()。我无法访问的文档的视图数据源 returns 条目是怎么回事?更重要的是,这个应用程序已经投入生产一年了,但我们最近发现这种行为似乎是在升级到 9.01FP3(从 9.01)之后。开发服务器在没有 FP 的 9.01 上运行并且工作正常。有人注意到这种奇怪的行为吗?
编辑#1:
它是单一类别视图,用户无权访问该类别中的任何文档。现在,当我使用 NotesXSPViewEntry.getDocument()!=null 检查修复 repeate 中的代码时,我可以通过这种方式修复视图,以便 xpage 正确呈现,但在任何提交之后,它都会失败,并出现以下模糊的内部错误。 (我什至尝试使用带有空操作的按钮,只检查完整提交)
NotesException: A required argument has not been provided
Location:
Code Snippet:
... 64 more at com.ibm.xsp.script.WrapperDominoEx$fct_AbstractDominoViewEntry.call(WrapperDominoEx.java:820) at com.ibm.xsp.model.domino.wrapped.DominoViewEntry.getDocument(DominoViewEntry.java:381) at lotus.domino.local.Database.getDocumentByUNID(Unknown Source) at lotus.domino.local.Database.NgetDocumentByUNID(Native Method)
Caused by: NotesException: A required argument has not been provided
... 48 more at com.ibm.xsp.binding.javascript.JavaScriptValueBinding.getValue(JavaScriptValueBinding.java:78) at com.ibm.xsp.javascript.JavaScriptInterpreter.interpret(JavaScriptInterpreter.java:194) at com.ibm.xsp.javascript.JavaScriptInterpreter.interpret(JavaScriptInterpreter.java:222) at com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:234) at com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:251) at com.ibm.jscript.JSExpression.interpretExpression(JSExpression.java:410) at java.security.AccessController.doPrivileged(AccessController.java:365) at com.ibm.jscript.JSExpression.run(JSExpression.java:414) at com.ibm.jscript.JSExpression.access(JSExpression.java:424) at com.ibm.jscript.JSExpression._interpretExpression(JSExpression.java:435) at com.ibm.jscript.ASTTree.ASTProgram.interpretEx(ASTProgram.java:139) at com.ibm.jscript.ASTTree.ASTProgram.interpret(ASTProgram.java:119) at com.ibm.jscript.ASTTree.binaryop.ASTBinaryRelAnd.interpret(ASTBinaryRelAnd.java:73) at com.ibm.jscript.ASTTree.binaryop.ASTBinaryDefaultOp.interpret(ASTBinaryDefaultOp.java:49) at com.ibm.jscript.ASTTree.ASTCall.interpret(ASTCall.java:197) at com.ibm.jscript.types.FBSObject.call(FBSObject.java:161) at com.ibm.xsp.script.WrapperDominoEx$fct_AbstractDominoViewEntry.call(WrapperDominoEx.java:1105)null
Caused by: com.ibm.jscript.InterpretException: Script interpreter error, line=1, col=19: [TypeError] Exception occurred calling method NotesXspViewEntry.getDocument()
... 19 more at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:98) at com.ibm.xsp.component.UIViewRootEx.processDecodes(UIViewRootEx.java:1399) at com.ibm.xsp.component.UIViewRootEx._processDecodes(UIViewRootEx.java:1438) at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:343) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIForm.processDecodes(UIForm.java:166) at com.ibm.xsp.component.UIDataPanelBase.processDecodes(UIDataPanelBase.java:331) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at com.ibm.xsp.component.UIDataPanelBase.processDecodes(UIDataPanelBase.java:331) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at com.ibm.xsp.component.UIDataPanelBase.processDecodes(UIDataPanelBase.java:331) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at com.ibm.xsp.component.UIDataPanelBase.processDecodes(UIDataPanelBase.java:331) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at com.ibm.xsp.component.UIDataPanelBase.processDecodes(UIDataPanelBase.java:331) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at com.ibm.xsp.component.UIDataIterator.processDecodes(UIDataIterator.java:780) at com.ibm.xsp.component.UIDataPanelBase.isRendered(UIDataPanelBase.java:78) at com.ibm.xsp.component.UIDataPanelBase.isRenderedProp(UIDataPanelBase.java:81) at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:451) at com.ibm.xsp.binding.javascript.JavaScriptValueBinding.getValue(JavaScriptValueBinding.java:132)
在“视图设置”中有一个 属性 基本上表示 "don't show empty categories"。这可能就是正在发生的事情。 Readers 字段正在工作,但在视图索引本身中有一些受保护的文档,并且由于类别的原因,更多用户可以使用这些文档。所以在客户端中你打开 "don't show empty" 选项来消除它。
我认为这也适用于 XPages 世界,但我不是 100% 确定,因为我没有在 XPages 中完成很多阅读器字段。
我遇到了非常奇怪的行为,我无法解释,但我需要解释。在 Xpage 上,我嵌入了使用视图数据源和相应的中继器创建的视图。现在我发现,该视图数据源 returns 所有视图条目,即使那些用户也无法访问应有的访问控制(读者字段)。在重复控件中,我收到 NotesXSPViewEntry.getDocument() nullPointer 错误,因为 NotesXSPViewEntry returns null for getDocument()。我无法访问的文档的视图数据源 returns 条目是怎么回事?更重要的是,这个应用程序已经投入生产一年了,但我们最近发现这种行为似乎是在升级到 9.01FP3(从 9.01)之后。开发服务器在没有 FP 的 9.01 上运行并且工作正常。有人注意到这种奇怪的行为吗?
编辑#1: 它是单一类别视图,用户无权访问该类别中的任何文档。现在,当我使用 NotesXSPViewEntry.getDocument()!=null 检查修复 repeate 中的代码时,我可以通过这种方式修复视图,以便 xpage 正确呈现,但在任何提交之后,它都会失败,并出现以下模糊的内部错误。 (我什至尝试使用带有空操作的按钮,只检查完整提交)
NotesException: A required argument has not been provided
Location:
Code Snippet:
... 64 more at com.ibm.xsp.script.WrapperDominoEx$fct_AbstractDominoViewEntry.call(WrapperDominoEx.java:820) at com.ibm.xsp.model.domino.wrapped.DominoViewEntry.getDocument(DominoViewEntry.java:381) at lotus.domino.local.Database.getDocumentByUNID(Unknown Source) at lotus.domino.local.Database.NgetDocumentByUNID(Native Method)
Caused by: NotesException: A required argument has not been provided
... 48 more at com.ibm.xsp.binding.javascript.JavaScriptValueBinding.getValue(JavaScriptValueBinding.java:78) at com.ibm.xsp.javascript.JavaScriptInterpreter.interpret(JavaScriptInterpreter.java:194) at com.ibm.xsp.javascript.JavaScriptInterpreter.interpret(JavaScriptInterpreter.java:222) at com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:234) at com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:251) at com.ibm.jscript.JSExpression.interpretExpression(JSExpression.java:410) at java.security.AccessController.doPrivileged(AccessController.java:365) at com.ibm.jscript.JSExpression.run(JSExpression.java:414) at com.ibm.jscript.JSExpression.access(JSExpression.java:424) at com.ibm.jscript.JSExpression._interpretExpression(JSExpression.java:435) at com.ibm.jscript.ASTTree.ASTProgram.interpretEx(ASTProgram.java:139) at com.ibm.jscript.ASTTree.ASTProgram.interpret(ASTProgram.java:119) at com.ibm.jscript.ASTTree.binaryop.ASTBinaryRelAnd.interpret(ASTBinaryRelAnd.java:73) at com.ibm.jscript.ASTTree.binaryop.ASTBinaryDefaultOp.interpret(ASTBinaryDefaultOp.java:49) at com.ibm.jscript.ASTTree.ASTCall.interpret(ASTCall.java:197) at com.ibm.jscript.types.FBSObject.call(FBSObject.java:161) at com.ibm.xsp.script.WrapperDominoEx$fct_AbstractDominoViewEntry.call(WrapperDominoEx.java:1105)null
Caused by: com.ibm.jscript.InterpretException: Script interpreter error, line=1, col=19: [TypeError] Exception occurred calling method NotesXspViewEntry.getDocument()
... 19 more at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:98) at com.ibm.xsp.component.UIViewRootEx.processDecodes(UIViewRootEx.java:1399) at com.ibm.xsp.component.UIViewRootEx._processDecodes(UIViewRootEx.java:1438) at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:343) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIForm.processDecodes(UIForm.java:166) at com.ibm.xsp.component.UIDataPanelBase.processDecodes(UIDataPanelBase.java:331) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at com.ibm.xsp.component.UIDataPanelBase.processDecodes(UIDataPanelBase.java:331) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at com.ibm.xsp.component.UIDataPanelBase.processDecodes(UIDataPanelBase.java:331) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at com.ibm.xsp.component.UIDataPanelBase.processDecodes(UIDataPanelBase.java:331) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at com.ibm.xsp.component.UIDataPanelBase.processDecodes(UIDataPanelBase.java:331) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) at com.ibm.xsp.component.UIDataIterator.processDecodes(UIDataIterator.java:780) at com.ibm.xsp.component.UIDataPanelBase.isRendered(UIDataPanelBase.java:78) at com.ibm.xsp.component.UIDataPanelBase.isRenderedProp(UIDataPanelBase.java:81) at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:451) at com.ibm.xsp.binding.javascript.JavaScriptValueBinding.getValue(JavaScriptValueBinding.java:132)
在“视图设置”中有一个 属性 基本上表示 "don't show empty categories"。这可能就是正在发生的事情。 Readers 字段正在工作,但在视图索引本身中有一些受保护的文档,并且由于类别的原因,更多用户可以使用这些文档。所以在客户端中你打开 "don't show empty" 选项来消除它。
我认为这也适用于 XPages 世界,但我不是 100% 确定,因为我没有在 XPages 中完成很多阅读器字段。