我有以下实体:
球队
@Entity
@Table
public class Team {
[..]
private Set<UserTeamRole> userTeamRoles;
/**
* @return the userTeamRoles
*/
@OneToMany(cascade = { CascadeType.ALL }, mappedBy = "team", fetch = FetchType.LAZY)
public Set<UserTeamRole> getUserTeamRoles() {
return userTeamRoles;
}
/**
* @param userTeamRoles
* the userTeamRoles to set
*/
public void setUserTeamRoles(Set<UserTeamRole> userTeamRoles) {
this.userTeamRoles = userTeamRoles;
}
Run Code Online (Sandbox Code Playgroud)
}
和
USER_TEAM_ROLE
@Entity
@Table(name = "user_team_role")
public class UserTeamRole {
@ManyToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
@JoinColumn(name = "FK_TeamId")
public Team getTeam() {
return …Run Code Online (Sandbox Code Playgroud) 我需要在Eclipse插件项目中为TreeViewer创建一个上下文菜单.但是,菜单不应包含常量项,它们应根据所选节点的类型而有所不同.例如,我的treeViewer具有以下层次结构:
Node A
|
--Node B
|
--Node C
Run Code Online (Sandbox Code Playgroud)
对于节点A - 我想显示带有操作的菜单,但是对于节点B和CI,不希望显示任何内容(没有菜单).我设法为节点A创建菜单,但是当选择其他类型的节点时,我无法摆脱它.我的代码看起来像:
treeViewer.addSelectionChangedListener(
new ISelectionChangedListener(){
public void selectionChanged(SelectionChangedEvent event) {
if(event.getSelection() instanceof IStructuredSelection) {
IStructuredSelection selection = (IStructuredSelection)event.getSelection();
Object o = selection.getFirstElement();
MenuManager menuMgr = new MenuManager();
if (o instanceof NodeA){
Menu menu = menuMgr.createContextMenu(treeViewer.getControl());
treeViewer.getControl().setMenu(menu);
getSite().registerContextMenu(menuMgr, treeViewer);
menuMgr.add(new SomeAction());
}else {
//what ?
}
}
}
}
);
Run Code Online (Sandbox Code Playgroud)
在else分支我试着拨打dispose(),removeAll()在MenuManager ...没有什么工作!
任何帮助表示赞赏,谢谢.
我有一个PrimeFaces数据表,显示一组用户,每行都有一个要删除的commandLink.单击链接时,将显示confirmDialog,其中显示"是"按钮,该按钮应调用辅助bean中的"删除"方法.不幸的是,没有调用此方法,只是隐藏了对话框.设置链接中的参数是因为我在调试器中看到了它.
这是我的页面:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head><title>Manage users</title></h:head>
<h:body>
<ui:composition template="../../template/commonLayout.xhtml">
<ui:define name="content">
<p:layoutUnit position="center">
<h:form id="datatable">
<p:tabView>
<p:tab title="Users">
<p:button value = "Add user" outcome="addUser.xhtml?faces-redirect=true"/>
<p:growl id="messages" showDetail="true"/>
<p:dataTable id="usersTable" var="user" value="#{userMB.userList}" paginator="true" rows="25"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}">
<p:ajax event="rowEdit" listener="#{userMB.onEditUser}" />
<p:column headerText="First name">
<h:outputText value="#{user.firstName}" />
</p:column>
<p:column headerText="Last name">
<h:outputText value="#{user.lastName}" />
</p:column>
<p:column headerText="E-mail">
<h:outputText value="#{user.email}" />
</p:column>
<p:column headerText="Username"> …Run Code Online (Sandbox Code Playgroud) 我偶然发现了一个非常烦人的情况:我使用Hibernate和Spring作为我的应用程序的后端,似乎在某些情况下,与特定实体关系的实体不会从DB获取为正常的实体对象,但作为Javassist类型.例如:
我的Campaign实体具有以下关系:
@Entity
@Table(name = "campaign")
public class Campaign implements Serializable {
[..]
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(uniqueConstraints = @UniqueConstraint(columnNames = {
"campaign_id", "dealer_id" }), name = "campaign_has_dealer", joinColumns = { @JoinColumn(name = "campaign_id", nullable = false) }, inverseJoinColumns = { @JoinColumn(name = "dealer_id", nullable = false) })
private List<Dealer> dealers = new ArrayList<Dealer>();
@ManyToMany
// (fetch = FetchType.LAZY)
@JoinTable(uniqueConstraints = @UniqueConstraint(columnNames = {
"campaign_id", "sales_area_id" }), name = "campaign_has_sales_area", joinColumns = { @JoinColumn(name = "campaign_id", nullable = false) }, inverseJoinColumns …Run Code Online (Sandbox Code Playgroud) 我在使用 Spring、Hibernate 和 JPA 的 Web 应用程序中遇到一些问题。问题是内存消耗非常高,随着时间的推移,内存消耗会增加,而且似乎永远不会减少。它们很可能源于 EntityManager 的错误使用。我已经四处寻找,但还没有找到确定的东西。
我们使用的 DAO 都扩展了以下 GenericDAO,其中注入了我们唯一的 EntityManager:
public abstract class GenericDAOImpl<E extends AbstractEntity<P>, P> implements
GenericDAO<E, P> {
@PersistenceContext
@Autowired
private EntityManager entityManager;
[...]
Run Code Online (Sandbox Code Playgroud)
使用通用 DAO 是因为它具有通过 ID 等获取实体的方法,这在所有约 40 个 DAO 中实现起来会很痛苦。
EntityManager 通过以下方式配置为 Spring bean:
<bean class="org.springframework.orm.jpa.JpaTransactionManager"
id="transactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven mode="aspectj"
transaction-manager="transactionManager" />
<bean
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
id="entityManagerFactory">
<property name="persistenceUnitName" value="persistenceUnit" />
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="entityManager" factory-bean="entityManagerFactory"
factory-method="createEntityManager" scope="singleton" />
Run Code Online (Sandbox Code Playgroud)
我认为最大的问题是使用这个共享的 EntityManager 来处理所有事情。在服务类中,我们对需要事务的方法使用@Transactional 注释。这会根据我读取的内容自动刷新 EntityManager,但与清除不同,所以我猜对象仍在内存中。
我们注意到每天都会在数据库中自动导入数据后内存会增加(大约 …
我正在使用JSF 2.0和PrimeFaces启动一个Web应用程序项目.其中一个要求是根据用户角色显示不同的页面内容.例如,只有管理员才能看到菜单项 - 用户管理.
安全方面我会选择Spring安全.
怎么能以优雅的方式实现呢?我应该为每个人制作一个xhtml模板,然后使用特定于角色的UI项为每个角色创建不同的页面吗?
谢谢
我正在尝试使用JSF 2.0.我正在尝试一个基本的导航示例,但它无法正常工作.
文件结构如下:

我在web.xml中配置了映射:
<!-- Change to "Production" when you are ready to deploy -->
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<!-- Welcome page -->
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<!-- JSF mapping -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
索引页面有2个按钮,可以在单击时将您带到不同的页面
faces-config.xml文件定义了一些导航案例:
<!-- Configuration of navigation rules -->
<navigation-rule>
<from-view-id>/index.xhtml</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/pages/success.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>error</from-outcome>
<to-view-id>/pages/error.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
Run Code Online (Sandbox Code Playgroud)
例如,以下按钮将带您进入成功页面(/pages/success.xhtml):
<p:commandButton id="addUser" value="Add" action="#{userMB.addUser}" ajax="false"/>
Run Code Online (Sandbox Code Playgroud)
我调试了这个addUser的返回值肯定是"成功".
该页面切换到success.xhtml,因为我看到内容已更改,但浏览器URL指向index.xhtml ....
在启动时:URL是localhost:8080/PROJECT /没有index.xhtml可能是因为我们将其配置为欢迎文件.当我们点击上面的按钮时,URL变为localhost:8080/PROJECT/index.xhtml
我相信我对映射或相对路径搞砸了.我找到了一些建议,唯一的映射应该是*.xhtml,但我真的不明白为什么以及如何处理页面的多个子文件夹.
任何帮助表示赞赏,谢谢
我在我的网络应用程序中使用PrimeFaces 3.4,对于特定页面,控件不会与普通的PrimeFaces皮肤一起显示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>VMS login</title>
</h:head>
<h:body>
<h:form id="loginForm">
<p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" />
<p:panel header="#{msgs['login.title']}">
<p:panelGrid id="loginPanel" columns="2">
<h:outputText value="#{msgs['login.username']}" />
<p:inputText id="j_username" value="#{loginFormBean.userName}" required="true"></p:inputText>
<p:message for="j_username" ></p:message>
<h:outputText value="#{msgs['login.password']}" />
<p:password id="j_password" value="#{loginFormBean.password}" required="true" feedback="false"></p:password>
<p:message for="j_password"></p:message>
<p:commandButton action="#{loginController.loginUsingSpringAuthenticationManager}" value="#{msgs['login.button']}" update="loginForm" ajax="true"></p:commandButton>
</p:panelGrid>
</p:panel>
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
这输出到:

面板应该有一个标题,依此类推.
有趣的是,在我<p:layout>在布局中使用不同面板的另一个页面中,它们显示正常的PrimeFaces外观和感觉.
我究竟做错了什么?谢谢
我有一个使用JSF的Web应用程序,Spring安全性用于登录和授权.
当用户键入特定页面并且他没有登录时,例如localhost:8080/APP/page.xhtml,应用程序重定向到登录页面即可.之后,用户已登录,但他被重定向到的页面index.xhtml是默认的欢迎页面,而不是page.xhtml.
我想要以下行为:用户去localhost:8080/APP/page.xhtml,他被重定向到登录,之后他应该被重定向到他想要的页面 - page.xhtml.
已编辑 - spring-security.xml的片段:
<security:http auto-config="true">
<security:intercept-url pattern="/javax.faces.resource/*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<security:intercept-url pattern="/login.xhtml" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<security:intercept-url pattern="/**" access="ROLE_UNALLOCATED, ROLE_MANAGER"/>
<security:intercept-url pattern="/pages/management/" access="ROLE_MANAGER"/>
<security:intercept-url pattern="/pages/requests/" access="ROLE_UNALLOCATED, ROLE_EMPLOYEE, ROLE_TEAM_LEADER, ROLE_MANAGER"/>
<security:form-login login-page="/login.xhtml"
/>
<security:logout logout-url="/j_spring_security_logout"
logout-success-url="/login.xhtml"
invalidate-session="true"/>
</security:http>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢
编辑:
我以为是因为:
<!-- Welcome page -->
<welcome-file-list>
<welcome-file>/index.xhtml</welcome-file>
</welcome-file-list>
Run Code Online (Sandbox Code Playgroud)
来自web.xml.我删除了这个,但结果相同.
稍后编辑:
我刚注意到我的自定义loginController中的一行,之后if (authenticationResponseToken.isAuthenticated())几乎肯定是问题的根源:
loginController:
@ManagedBean(name = "loginController")
@SessionScoped
@Controller
public class LoginController implements Serializable {
private static final long serialVersionUID …Run Code Online (Sandbox Code Playgroud) 我想知道如何在键匹配时有效地减去两个映射的值.目前我有2 HashMap<String,Integer>并且这样做:
for (String key: map1.keySet()){
if (map2.keySet().contains(key)){
//subtract
}
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
java ×5
jsf ×5
jsf-2 ×4
primefaces ×4
hibernate ×3
spring ×3
jpa ×2
associations ×1
database ×1
eclipse ×1
hashmap ×1
javassist ×1
login-page ×1
navigation ×1
one-to-many ×1
swt ×1