1

好的,这是我的问题:我有一个 JSF 应用程序和一些 JSP 文件。假设我有 main.jsp,它有一个视图并包含 sub.jsp。这工作正常。sub.jsp 包含一个子视图。因此,sub.jsp 中表单元素的所有 ID 都遵循 'subview:component' 的形式。现在假设我正在使用一些 ajax 并想要获取 jsp 页面 sub.jsp 并将其包含在某个 DIV 中。现在 ID 都是“组件”形式的。我不知道如何解决这个问题,并且必须在我的交互式 javascript 中检查 2 组不同的 ID 是一件痛苦的事情。有没有办法获得一致的ID?

我试过:删除子视图 - (然后 AJAX 调用将失败,因为没有找到视图)

h:form prependid=false - 这只会删除表单 id,而不是子视图 id

4

2 回答 2

2

AJAX 与 JSF 配合起来很棘手。如果您使用的 JSF 框架不支持它,您将遇到许多视图状态问题。

我很惊讶当您直接寻址sub.jsp时没有引发异常 - sub.jsp中不应该有 h:view并且没有 UIViewRoot,我不确定如何创建 UI 树。如果您在sub.jsp中有 ah:view ,那么您将两个 UIViewRoots 放入您的 UI 树中 - 这是一个错误。(JSF 组件树大致类似于 Swing 或 SWT 等其他 Java 小部件工具包。)

我怀疑您正在观察的问题是您提交的视图与最初渲染的视图不同。由于组件树完全不同,clientIds 将从不同的视图根生成。您可以在此答案中了解它们是如何构建的。

简而言之,我不认为您用来更新客户端的机制是有效的。

于 2008-11-18T17:16:37.047 回答
0

你看过 ajax4Jsf(又名 Richfaces)吗?

于 2009-02-23T15:05:51.773 回答