当尝试在EL中引用托管bean时#{bean.entity.property},有时会javax.el.PropertyNotFoundException: Target Unreachable抛出异常,通常是在设置bean属性时,或者要调用bean操作时.
似乎有五种不同的消息:
这些都意味着什么?它们是如何引起的,它们应该如何解决?
在JSF MVC框架中谁是Model,View和Controller?
我正在尝试习惯JSF如何处理数据(来自弹簧背景)
我正在创建一个维护用户列表的简单示例,我有类似的东西
<h:dataTable value="#{userListController.userList}" var="u">
<h:column>#{u.userId}</h:column>
<h:column>#{u.userName}</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
然后"控制器"有类似的东西
@Named(value = "userListController")
@SessionScoped
public class UserListController {
@EJB
private UserListService userListService;
private List<User> userList;
public List<User> getUserList() {
userList = userListService.getUsers();
return userList;
}
}
Run Code Online (Sandbox Code Playgroud)
而"服务"(虽然看起来更像是DAO)有
public class UserListService {
@PersistenceContext
private EntityManager em;
public List<User> getUsers() {
Query query = em.createQuery("SELECT u from User as u");
return query.getResultList();
}
}
Run Code Online (Sandbox Code Playgroud)
这是正确的做事方式吗?我的术语是对的吗?"服务"感觉更像是DAO?控制器感觉它正在做一些服务工作.
这些天我曾经和JSF一起工作,但是有一个"惯例",如果我应该使用的话,我有疑问.在使用托管bean时,人们习惯将其命名为XxxxxManagedBean前缀可以是与您的业务相关的任何名称.
你有这样的工作吗?特别是,尽管让搜索变得容易,但我并不喜欢那么多.你在使用其他约定吗?
谢谢你回答这个简单的疑问.
我正在学习Java EE 6,我正在努力掌握它的整体形象.我正在阅读有关JSF以及如何添加组件的内容.我正在将组件中的值设置/读取到具有@ManagedBean批注的bean.
我在理解它时遇到了一些麻烦.什么是Managedbeans?它只是保持组件状态的对象吗?他们也可以有其他方法吗?EJB适合哪里?托管bean是否在EJB上调用了方法?
我常常对这两个阶段产生怀疑.以下是我的理解:
应用请求值
更新模型值
我在想我的理解是正确的.但是,阅读一些文章让我感到困惑.我想在这两个阶段让我更清楚.请澄清我.
我有一个动态数据表列表,我需要为每个表的单行启用行选择。下面的代码仅当用户选择最后一个数据表的一行时才起作用,可能是因为 Ajax 事件被替换并且只有最后一个事件起作用。
如果用户从另一个数据表中选择一行,则会调用 onRowSelect 方法,但有一个NullPointerExceptionon 变量selectedRow。
也许我需要在Java bean中创建多个onrowselect方法,每个数据表一个,但该表的数量是可变的。
我该如何解决这个问题?
<c:forEach items="#{azPerformancePrenPubAll.selectedCompanyTemp}" var="companyCode" varStatus="loop">
<p:accordionPanel id="acc_#{companyCode}" widgetVar="accordionAziendale_#{companyCode}" activeIndex="-1">
<p:tab title="#{azPerformancePrenPubAll.selectedCompanyName.get(loop.index)}">
<p:dataTable id="tablePerformance_#{companyCode}" rendered="#{!azPerformancePrenPubAll.isCompanyVisible}"
widgetVar="tablePerformance" var="performance" value="#{azPerformancePrenotatiPubAll.listPerformances.get(loop.index)}"
styleClass="perfDataTable no-border" rowIndexVar="rowIndex"
selectionMode="single" selection="#{azPerformancePrenPubAll.selectedRow}" rowKey="#{performance.id}">
<p:ajax event="rowSelect" listener="#{azPerformancePrenPubAll.onRowSelect}" update="formPerformance,pageSubDescription,pageDescription"/>
...
Run Code Online (Sandbox Code Playgroud)