问题标签 [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.

0 投票
2 回答
1599 浏览

jsf - 如何在 JSF 支持 bean 之间共享实体?

我想模块化我的 JSF 2.1 / Java EE 应用程序。我有一个由几个模块组成的页面。每个模块都应该使用一个单独的 JSF 支持 bean。其中一些模块需要显示和更改来自/在同一实体上的一些数据。

我已经尝试了一些方法,但到目前为止我并不满意。我问自己最好的方法是什么?

所有模块都使用相同的实体,如果某些数据已更改,它们(可能)需要通知其他支持 bean。

对我已经尝试过的一些方法的评论:

  • 通过接口将实体传递给我的组件(XHTML)也不会将它传递给支持 bean
  • 通常不鼓励通过从请求参数中读取 id 在 bean 的 postContruct 方法中加载实体,而建议使用“viewParam”方法
  • 恕我直言,使用“viewParam”不如在创建 bean 之后拥有实体(在我的 postConstruct 中)。我不确定何时调用 bean 的 setter。
0 投票
2 回答
449 浏览

jsf-2 - f:viewParam 上的必需标志不会阻止调用 preRenderView

我的一些 viewParams 是强制性的,当它们丢失时会显示 FacesMessage。但是系统事件 preRenderView 是在搜索参数为空的情况下执行的,因此返回了默认的数据结果。有没有办法阻止 preRenderView 注册的方法在违反所需属性时被执行?

0 投票
1 回答
4514 浏览

jsf - f:param 未传递参数或未设置参数

我使用h:linkwithincludeViewParams=true在我的列表和查看页面之间导航,并使查看页面 URL 可收藏,但它不起作用。以下是我的代码的相关部分:

在 layout.xhtml (我的模板)中:

在 Articles.xhtml(我的列表页面)中:

在 View_Article.xhtml(我的查看详情页面)中:

更多信息:我使用 JSF 2.2、ocpsoft 重写过滤器、primefaces 库,并且ArticleController.java是会话范围的。

我尝试了以下方法:

1- 我用过h:commandLink;有了这个,导航工作,但 URL 不包含视图参数

文章.xhtml:

ArticleController.java: ...

我希望 URL 是,http://localhost:8080/testApp/en/View_Article?id=1但它就像`http://localhost:8080/testApp/en/View_Article

2-我插入http://localhost:8080/testApp/en/View_Article?id=1并且它在两种情况下都有效。

0 投票
0 回答
240 浏览

jsf-2 - “#{rolebean.roleId}”:目标不可达,标识符“roleBean”解析为空

这是我的 xhtml

这是我的代码

在这里,我试图将 id 作为参数传递给下一页,它应该根据该 id 检索值。当我将 bean id 作为参数传递给下一页时,出现错误

“#{rolebean.roleId}”:目标不可达,标识符“roleBean”解析为空

这是我携带到下一个 xhtml 的第一个 xhtml 页面的列中的值

0 投票
1 回答
614 浏览

jsf-2 - 通过同名 f:viewParam 绑定使用来自 f:param 的值更新 Bean

使用此代码:

当我使用 commandLink 提交时,viewParam(在调试中看到)使用来自 UPDATE_MODEL 阶段的 f:param 的值更新 myBean.aParameter。

这是正常的吗?

是的,我知道 viewParam 和 param 具有相同的名称,对此我别无选择。

我使用 Mojarra 2.1.27

0 投票
1 回答
2029 浏览

jsf - includeViewParams=true 将空模型值转换为查询字符串中的空字符串

给定<p:selectOneMenu>如下。

对应的托管 bean:

指示的参数<f:viewParam>是可选的。例如,使用如下 URL 访问页面。

https://localhost:8181/Project-war/private_resources/Test.jsf

由于id是一个可选参数,一个空参数附加到 URL(当语言从 更改时<p:selectOneMenu>),以防它如下所示。

https://localhost:8181/Project-war/private_resources/Test.jsf?id=

这不应该发生。如果未提供空参数并且 URL 应与第一个类似,则不应附加空参数。

有没有办法防止空参数在未传递时附加到 URL 中?


这仅与<f:viewParam>-指定的转换器相关联javax.faces.Long

如果删除此转换器,则不会将参数附加到 URL,以防不提供任何参数。

尽管完全没有必要指定此处演示的转换器,但我有如下所示的转换器,可将id通过 URL 作为查询字符串参数传递的数据转换为 JPA 实体。

现在需要明确指定此转换器<f:viewParam>,如下所示。

并且关联的托管 bean 需要进行如下更改。

0 投票
1 回答
1054 浏览

jsf - 仅在页面加载时处理 f:viewParam

我正在使用 an<f:viewParam>来传递参数,如下所示。

是否可以处理这个<f:viewParam>,只有在页面加载/刷新时?

只是因为用 指定的转换器<f:viewParam>将通过查询字符串传递的值转换为 JPA 实体的成本很高。因此,它涉及昂贵的数据库事务,即使在使用诸如 之类的组件进行ajaxical<p:commandButton>回发时也是如此,<p:commandLink>这是不必要的。

因此,例如,当单击<p:commandLink>ajaxical)时,不应执行昂贵的业务服务(在转换器中)。这可以做到吗?


rendered当属性被评估为facesContext.postbacklikerendered="#{not facesContext.postback}"但属性rendered记录时,这以某种方式起作用(尽管如此奇怪)。因此,它是不可靠的。

0 投票
1 回答
1763 浏览

jsf - 将多个视图参数传递给具有复合主键的实体的转换器

如何为具有复合主键的实体编写转换器?

我想使用 URl 编辑实体,例如 `\edit_representative.xhtml?emp_id=12345&project_id=45

我正在使用 Omnifaces,所以我对单个主键有类似的东西

但我如何将员工正在处理的 project_id 传递给转换器

编辑

根据 BalusC 的回答,我使用了第二个选项,并在我的projectRepConverter转换器中有以下内容

在小脸上

0 投票
2 回答
765 浏览

jsf - 忽略 viewParam 的 @NotNull Bean 验证

问题

我正在尝试验证强制性 GET 请求参数。

在视图中,我添加了相应的 viewParam 标记。

我的 CDI bean 看起来像这样

当我使用以下请求时,验证工作正常并显示预期的验证消息。

但是,当我通过删除参数 customerId 更改请求时,将跳过验证并且不显示任何消息。

有没有办法让它按预期工作?

解决方法

我已将 viewParam 声明更改为

该更新版本适用于第二个请求。无论如何,我更喜欢使用 bean 验证。

我的设置

  • 莫哈拉 JSF 2.2.7
  • 焊接 2.2.1.Final
  • 休眠验证器 5.1.1.Final
  • 雄猫 7.0.54

web.xml

0 投票
2 回答
4216 浏览

ajax - SelectOneMenu 标记中的 PrimeFaces Ajax 侦听器不适用于 viewParam

我尝试使用 selectOneMenu ajax 侦听器,但当我的页面接收参数时它不起作用。

在我的测试中,我使用了 PrimeFaces ShowCase 页面中显示的相同示例,但我的页面也通过 viewParam 和 viewAction 接收参数。

第一次更改 selectOneMenu 时,会触发动作侦听器,然后停止工作。

我的页面:

还有豆子:

重要的:

如果我取出元数据、viewParam 和 viewAction 标记并用 @PostConstruct 标记 init() 方法,那么该示例可以完美运行,但我需要 page 参数。

我请你帮忙解决它。