2008-11-18 70 views
1

好的,我的问题:我有一个JSF应用程序和一些JSP文件。假设我有main.jsp,它有一个视图并包含sub.jsp。这工作正常。 sub.jsp包含一个子视图。因此,sub.jsp中的表单元素的所有ID都遵循'subview:component'的形式。现在假设我使用了一些ajax,并且想要获取jsp页面sub.jsp并将其包含在某个DIV中。现在ID全部是“组件”形式。我不知道解决此问题的方法,并且在我的交互式JavaScript中检查2个不同的ID集合是一种痛苦。有什么方法可以获得一致的ID吗?在JSF中加载ajax负载

我已经试过: 删除子视图 - (当时因为没有视图发现AJAX调用会失败)

H:形式prependid =假的 - 这不仅能消除表单ID,不是子视图ID

回答

2

对于JSF来说,AJAX很棘手。如果您使用的JSF框架不支持它,则会遇到许多视图状态问题。

我很惊讶,当你解决sub.jsp一个异常没有抛出直接 - 不应该有H:鉴于sub.jsp并没有UIViewRoot,我不知道如何UI树会被创建。如果您在sub.jsp中有h:视图,那么您将两个UIViewRoots放入您的UI树 - 这是一个错误。 (JSF组件树大致类似于其他Java小部件工具包(如Swing或SWT)。)

我怀疑你正在观察的问题是你正在向不同的视图提交原始呈现的视图。由于组件树完全不同,因此clientIds将从不同的视图根目录生成。您可以阅读关于它们在this answer中的构建方式。

总之,我不认为你用来更新客户端的机制是有效的。

0

你看过ajax4Jsf(aka Richfaces)吗?