问题标签 [backing-beans]
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.
java - 区分不同种类的 JSF 托管 Bean
我最近阅读了 Neil Griffin 的这篇文章区分不同种类的 JSF Managed-Beans,它让我思考了我自己的应用程序中不同 bean 之间的区别。快速总结要点:
Model Managed-Bean:这种类型的 managed-bean 参与了 MVC 设计模式的“模型”关注点。当你看到“模型”这个词时——想想 DATA。JSF 模型bean 应该是遵循JavaBean 设计模式的POJO,其中getter/setter 封装了属性。
支持托管 Bean:这种类型的托管 bean 参与 MVC 设计模式的“视图”关注点。backing-bean 的目的是支持 UI 逻辑,并且与 JSF 视图或 Facelet 组合中的 JSF 表单具有 1::1 的关系。尽管它通常具有带有关联 getter/setter 的 JavaBean 样式属性,但这些是 View 的属性,而不是底层应用程序数据模型的属性。JSF backing-beans 也可能有 JSF actionListener 和 valueChangeListener 方法。
Controller Managed-Bean:这种类型的 managed-bean 参与了 MVC 设计模式的“控制器”关注点。控制器 bean 的目的是执行某种业务逻辑并将导航结果返回给 JSF 导航处理程序。JSF 控制器 bean 通常具有 JSF 操作方法(而不是 actionListener 方法)。
Support Managed-Bean:这种类型的 bean “支持”MVC 设计模式的“视图”关注点中的一个或多个视图。典型的用例是向 JSF h:selectOneMenu 提供一个 ArrayList 下拉列表,该下拉列表出现在多个 JSF 视图中。如果下拉列表中的数据对用户来说是特定的,那么 bean 将保留在会话范围内。
Utility Managed-Bean:这种类型的 bean 为一个或多个 JSF 视图提供某种类型的“实用程序”功能。一个很好的例子可能是可以在多个 Web 应用程序中重用的 FileUpload bean。
这对我来说很有意义,在过去的几个小时里,我一直在重构我的代码,并就用户登录提出了以下建议:
这AuthenticationController
是 Controller Managed-Bean 的一个示例。它是请求范围的,具有两个用于设置用户名和密码的 getter 和 setter,以及两个导航方法,authenticate
以及logout
,在成功登录时将用户导航到他们的私人区域,或者在注销时导航到主页。
这UserBean
是 Support Managed-Bean 的一个示例。它是会话范围的,并具有一个带有 getter 和 setter 的类实例User
(当您未经过身份验证时,它会为 null),仅此而已。
AuthenticationController
将此用户作为托管属性 ( ) @ManagedProperty(value = "#{userController.user} private User user;
。成功验证后,AuthenticationController
会将托管属性设置为具有用于登录的相应用户名的实际用户实例。
任何新的 bean 都可以将用户作为托管属性获取并提取他们需要的数据,例如组成员身份,如果User
该类具有包含组名的列表。
这种方式是否是分离关注点的正确方法?
jsf-2 - GET 参数视图作用域 Bean
我对我的 JSF2/richfaces 4 项目产生了奇怪的影响。我使用 viewscoped bean 和 datascroller 来查看来自我的支持 bean 的一些数据。bean 是 viewscoped 并传递figureId
参数我触发preRenderView
事件。
显示正常,但是当我单击 datascroller 的第二个站点时,我得到此行的 nullponter 异常:<f:event type="preRenderView" listener="#{pointEdit.init}" />
.
我的豆子:
在我导入新数据之前,它在我的测试数据上运行良好。为什么我的 figureId GET 参数在 init 函数中找不到?使用我的测试数据(5 位数)我从来没有遇到过这个问题。
更新:
jsf-2 - 复合组件支持 bean 位置
我正在尝试将我的 JSF2 页面拆分为复合组件。所以我决定把复合组件放在一个逻辑文件树中。例如:
WebContent/resources/components/page1/component1.xhtml
关联的 bean 在
Java资源/src/components/page1/component1.java
它的包装是这样的components.page1
。
在此示例中,component1.xhtml
已找到并呈现,但服务器未找到该 bean。
如果我不使用子包:
WebContent/resources/page1/component1.xhtml
Java 资源/src/page1/component1.java
因此,当类在包中时page1
,它可以工作!
复合组件bean和子包有问题吗?
我正在使用 MyFaces 2.0、Tomcat 6 和 Eclipse。
jsf-2 - 从支持 bean 方法为列表中的每个项目设置 itemDisabled
我有一个单选按钮列表,想根据支持 bean 方法的结果禁用一些项目。
这是正确的方法吗?意思是,此代码是否会调用列表中的checkIncompatible(x)
每个项目并将该项目设置为启用/禁用或仅设置一次,仅此而已?x
selectItems
我只设法让所有按钮启用或禁用,我怀疑该方法只被调用一次。或者我的其余代码并不像我想象的那么完美。这需要更长的时间才能解决。
java - 如何制作共享/实用程序支持 bean?
我有几个页面共享页面的特定部分,例如一组复选框,显示所有能够在这些用户中搜索的用户,所以我正在考虑将 UI 部分分组到一个 facelet 中,以便我可以将它包含在其他页面,对于服务器端部分,我正在考虑创建一个包含该页面的方法和属性的 sessionScoped bean,您如何看待这种方法?请指教,谢谢。
更新:有一个重要的问题,我是否应该使该 bean 中的方法同步,以便它为不同的请求返回不同的值,我的意思是不为不同的请求返回相同的结果?
java - 正确使用后备豆
是的,我搜索了有关支持豆的问题,发现了很多问题。我读了它们,我得到了其中的一些部分,但我需要问另一个问题,对不起。
根据我的理解,由于 JSF MVC 模式需要支持 bean。支持bean是模型。因此,如果您有一个显示表单、图像和登录框的页面,则支持 bean 将具有 getter/setter 对,用于需要在视图中公开或更改的数据。并且支持 bean 也将具有与此相关的方法,例如当您提交表单、登录等时会发生什么。
所以我的问题是上面的陈述是否正确,你为上面的组件制作的支持 bean 的数量取决于它有多少代码?
一个支持 bean 公开此页面上所有组件的方法和 getter/setter 对是否合法且“正确”(意味着我没有做错任何事情),就像制作 3 个支持 bean 一样?每个组件一个也可以。
这一切都归结为经验,看看你应该何时分开与为每个页面制作一个支持 bean,以及它的逻辑部分?我听说有人为页面上的每个组件制作了一个支持 bean,但听起来你最终会得到很多小类。
如果有人可以验证和纠正我,我会非常感激。
javascript - 单击命令按钮时,我将如何在 java 脚本中获取支持 bean 值
你能帮我做这件事吗?我试图通过单击命令按钮从我的 javascript 中的支持 bean 中获取价值。
这是我的 jsf 命令按钮
这是我的 javascript 函数
我的 bean 返回一个我存储在 mystring 变量中的字符串,但是当我发出警报时,我得到空值。如果有人帮助这样做,那就太好了。提前致谢。
jsf - 将 JSF bean 绑定到包含的 JSF
我已经走到了尽头。我是 JSF 的新手,所以这可能是我对很多东西的误解。
我将页面传递给某种类型,它显示表单的某些字段/标准,并且 bean 支持这一切,因为只有一个搜索。
在 myPage.jspx 我有:
不起作用,尽管 onsubmit="alert('hi');" 确实作为表单元素的属性工作。
我想最令人困惑的是
确实适用于 myPage.jspx 中的字段
为什么动作(按钮的属性)不起作用?
jsf - 如何在 jsf 1.2 中动态包含支持 bean 值
嗨,我有以下代码
creatPage1.jsp
我有 updatePage1.jsp
我希望能够包含(通过 ui:include 或 jsp:include)并能够动态地传递值(基础支持 bean 是 createPage 或 updatePage)。
所以结果应该是
Page1.jsp
在 jsf 中执行此操作的最佳方法是什么?
jsf - 如何从 JSF 支持 bean 提供文件下载?
有没有办法从 JSF 支持 bean 操作方法提供文件下载?我已经尝试了很多东西。主要问题是我无法弄清楚如何获取OutputStream
响应以便将文件内容写入其中。我知道如何使用 a 来执行此操作Servlet
,但这不能从 JSF 表单中调用,并且需要一个新请求。
如何OutputStream
从当前获得响应FacesContext
?