问题标签 [viewparams]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jsf - 在第一个 AJAX 请求上再次调用
我正在使用 JBoss Wildfly 8.2.0 并注意到它<f:viewParam>
在我的页面上被调用了两次:
- 第一次是当我使用 URL 中的给定参数访问我的页面时
- 第二次是根据我从该页面发出的第一个 AJAX 请求
豆:
XHTML:
我不明白为什么 AJAX 请求会触发<f:viewParam>
以及为什么只有第一个。
jsf - 使用时不工作
我想创建一个带有请求参数和 requestScoped bean 的主从屏幕,但视图参数没有被填充。
调用重定向的链接:
其背后的方法:
详情 xhtml 页面:
最后是详细信息 Bean:
currentVisitId 始终为 0.. 我实际上找不到它。
jsf-2 - f:viewParam 和 f:viewAction 不使用 *.faces 和 *.jsf 映射调用,但仅使用 *.xhtml
我的 webapp 有一个奇怪的行为。我已经绑定到我*.faces
的Faces Servlet。关于这个映射,我的所有页面都可以访问,但是没有调用my的 setter 和 my的方法。你有什么想法为什么会这样?*.jsf
*.xhtml
*.faces
*.jsf
<f:viewParam>
<f:viewAction>
jsf - javax.persistence.NoResultException:未找到查询的实体
我有一个网格,用户可以在其中查看他的记录,当他单击记录时,它会链接到另一个页面,以便他可以编辑或删除它。
该页面中的记录正确显示,并且它有一个按钮来更新记录,如果进行了任何更改并使用户回到网格。
我正在使用带有 Primefaces 的 Java 1.8,在 Netbeans 8.0.2 和 wildfy 8.2 上使用,我的操作系统是 UBUNTU。
当我尝试更改某些内容时,页面什么也不做,我在 wildfly 日志中有此记录
15:11:16,369 错误 [org.jboss.as.ejb3](默认任务 19)javax.ejb.EJBTransactionRolledbackException:找不到查询实体 15:11:16,371 错误 [org.jboss.as.ejb3.invocation](默认任务 19)JBAS014134:针对方法公共抽象 dominio.Gasto persistencia.GastoDAO.getGastoporID(int) 的组件 GastoDAOImpl 的 EJB 调用失败:javax.ejb.EJBTransactionRolledbackException:找不到用于查询的实体
原因:javax.persistence.NoResultException:未找到查询的实体
15:11:16,405 错误 [org.jboss.as.ejb3.invocation](默认任务 19)JBAS014134:方法公共抽象 dominio.Gasto controladores.GastoControlador.obtenerGastoporID(int)的组件 GastoControladorImpl 上的 EJB 调用失败:javax.ejb .EJBTransactionRolledbackException:未找到查询的实体
15:11:16,439 严重 [javax.enterprise.resource.webcontainer.jsf.context](默认任务 19)javax.faces.component.UpdateModelException:javax.el.ELException:/editargastos.xhtml @10,64 value=" #{gastoBean.idGasto}": javax.ejb.EJBTransactionRolledbackException: 没有找到查询的实体
奇怪的是,如果我在调试模式下运行程序,完全没有问题,系统按预期工作(数据被正确修改,用户回到主网格。
我的代码:
1)这是显示将被修改的项目的记录的页面,它在调试模式或正常模式下显示正确的记录
2)Backing bean:这是上一页中修改项调用的bean,当系统在调试模式下运行时,我可以看到每一行都按预期工作,完成后更新数据库并将用户发送到网格。
但是......如果我在没有调试选项的情况下运行程序,它根本不起作用,也不会修改数据库,也不会显示用户重定向,也不会显示异常。
更新:我刚刚修改了附加到按钮的方法只是为了给出一条消息,并且在“正常模式”下都不起作用我开始认为这实际上是 Primefaces 中的一个错误:(
jsf - 将get参数传递给JSF中的所有页面
我有一个具有两个用户界面的应用程序,一个用于移动设备,一个用于桌面。用户无论使用哪种设备都可以在它们之间进行切换,例如,他们可以从移动设备上观看桌面界面。为此,应用程序将参数添加到指定要加载的接口的 url。
我找到的解决方案是添加
在所有页面中,这是因为我看到无法在模板页面上定义它(JSF 2 facelets <f:metadata/> 在模板和页面中)。
JSF 中有没有一种方法可以将 get 参数传递给所有页面,而不必将 viewparam 定义放在每个页面上?
jsf - 在组件绑定上绑定 f:viewParam
我想创建<f:viewParam>
哪些设置的活动选项卡<p:tabView>
。在我的页面中,我定义了一个<f:viewParam>
:
并<p:tabView>
与binding
:
但它不起作用。如果我用参数打开我的页面,?tab=1
我会看到这个异常:
引起:javax.el.PropertyNotFoundException:目标无法到达,标识符“tabView”解析为空
为什么会这样?
PS:除了@BalusC 答案,您可以像这样在 viewMap 上使用绑定组件属性:
<p:ajax event="tabChange" />
在这种情况下,您必须通过或触发 ajax-request 将值放入 viewMapdynamic="true" cache="false"
jsf - @ViewScoped @ManagedBean 使用时销毁
我正在使用 Mojarra 2.2.12。我有一种情况,即 a@ViewScoped
@ManagedBean
在页面加载时立即被破坏,尽管视图没有结束。仅通过以下内容可重现该问题<h:body>
:
other
必须指不同的视图,而不是相同的视图。没有<f:viewParam>
必要重现问题。
和下面的bean:
如果我们删除includeViewParams="true"
属性,那么 bean 不会立即被销毁。为什么会includeViewParams="true"
导致这种行为?
jsf - 如何在中调用自定义转换器
我正在开发一个需要转换为遵循 POST-redirect-GET 模式的 Web 应用程序。在这种情况下,需要在重定向中传递视图范围的托管 bean,以便页面仍然可以正常工作。所以为了做到这一点,我在我的 faces-config 中添加了一个导航案例,它将在重定向中传递 view-param
该操作是执行设置 viewScopedBean
在我的 jsf 页面中,我有
转换器看起来一直在工作(getAsString 返回的字符串被传递给 getAsObject 转换它),除非重定向完成。传入的字符串是 viewScopedBean 的 toString 而不是我的自定义转换器类的 getAsString 方法中所做的,所以我得到了一个异常。
这应该是意料之中的吗?我错过了什么吗?转换器如何在具有视图参数的应用程序流中工作?
编辑:经过一番搜索,我发现为什么在调用而不是转换之后getAsObject
接收viewScopedBean
'stoString
作为其 String 参数。发生这种情况是因为一旦我的提交完成,就会发生重定向并且不会呈现 HTML,因此不会呈现,所以我的 String rep是它的返回值。actionClass.submit
getAsString
<f:viewParam>
viewScopedBean
toString
jsf - 使用请求范围的 bean 保留查询字符串参数
我有一些只读 bean,它们不需要在回发时维护它们的状态。因此,这些 bean 可以在请求范围内,例如,
Entity
作为查询字符串参数提供,该参数在模板客户端上定义如下。
传递的参数id
由一个自定义的隐式 JSF 转换器转换,标记为
然而,这个 bean 仅出于一个原因需要转换为视图范围的 bean。母版页模板上有两个 global<p:selectOneMenu>
代表语言列表和选定 PrimeFaces 主题列表。
当到达由上述请求范围托管 bean 支持的页面后更改语言或主题时,查询字符串参数id
将明显丢失,除非该 bean 至少被指定为视图范围 bean。
使用 a 更改语言或主题<p:selectOneMenu>
只是偶尔需要。应该以某种方式排除仅针对此功能的视图范围 bean。
当语言或主题在各自<p:selectOneMenu>
的 s 中偶尔更改时,有没有办法以某种方式将此 bean 保持为请求范围的 bean,同时保留查询字符串参数?
额外的 :
这两个<p:selectOneMenu>
由两个各自的会话范围 bean 支持。更改语言或主题的请求由<p:remoteCommand>
.
最后的请求,在将发生的语言或主题设置为当前会话后重定向,如下所示。
当前 bean 是一个请求范围的 bean,它ThemeBean
是一个会话范围的 bean,它已被注入到当前的请求范围的 bean 中。
jsf - h:link 上带有 includeViewParams="true" 的虚假 PreDestroyViewMapEvent
我有 2 个视图 (a.xhtml
和b.xhtml
),其中一个包含指向另一个的链接。第一种观点:
- 通过设置一些值来使用当前视图地图;
- 指向
b.xhtml
withh:link
usingincludeViewParams="true"
以便在链接的查询字符串中自动包含视图参数。
a.xhtml
:
和b.xhtml
:
此外,我在这里创建一个ViewMapListener
以演示一旦a.xhtml
被访问就会发生的“虚假”视图地图破坏事件调用。在我的faces-config.xml
我有这个条目:
是TestViewMapListener
这样的:
呈现页面a.xhtml
后,侦听器会打印出以下行:
这很奇怪,因为b.xhtml
从未访问过。当我使用按钮离开时,"Navigate away"
会按预期打印正确的事件:
仅当我includeViewParams="true"
在链接上使用时才会触发不正确的事件。通过调试,我可以看到它的发生是因为com.sun.faces.application.view.ViewMetadataImpl.createMetadataView(FacesContext)
临时设置为FacesContext
UIViewRootb.xhtml
创建原始视图地图的浅表副本并将其设置为临时视图根。这样做可能是为了正确检测链接的查询字符串参数值;它还会在操作期间暂时关闭事件,但是它会过早将它们重新打开(参见“finally”块),因此视图地图破坏事件被“错误地”触发为视图地图的临时副本,而没有事件此时预计原始视图地图本身。这是一个令人头疼的问题,因为我需要采取一些额外的措施来检测它是原始地图被破坏还是它的“幽灵”的虚假事件。
这是错误还是期望的行为?我正在使用 Mojarra 2.2.12。