小编Ton*_*ang的帖子

任何比PetClinic更大的开源Spring示例项目?

我已经阅读了spring doc和PetClinic示例项目.就像看到一些用Spring完成的更大的现实世界项目.谢谢.

spring open-source spring-mvc

53
推荐指数
3
解决办法
3万
查看次数

JPA:请帮助理解"加入获取"

我有以下实体结构:业务 - >广告系列 - >促销,其中一个业务可以有多个广告系列,一个广告系列可以有多个促销.一对多关系都被宣布为LAZY.我的代码中有一个位置,我需要急切地从业务中获取这两个集合,所以我这样做:

    Query query = entityManager.createQuery("select b from Business b " +
            "left join fetch b.campaigns c " +
            "left join fetch c.promotions where b.id=:id");
query.setParameter("id", b.getId());
business = (Business) query.getResultList().get(0);
Run Code Online (Sandbox Code Playgroud)

但是,查询返回一个结果列表,其中包含4个Business对象,所有4个对象都引用同一个Business实例.在我的数据库中,此商家下面有3个广告系列,所有3个广告系列都有3个广告系列.

我有两个问题:

  1. 首先,我使用List来包含关系的多方面,但是当程序运行时,我得到"org.hibernate.HibernateException:不能同时获取多个包"的异常.然后我用Google搜索了这个异常,看起来我必须使用Set而不是List.所以我将集合更改为Set并且它有效.有人能告诉我为什么列表在这种情况下不起作用?

  2. 我期望查询返回单个结果,因为它查询id,这是主键,因此只应返回单个结果.但事实证明它返回List中的4个实例.这是一个问题吗?或者这是预期的行为?

任何帮助将不胜感激.

orm hibernate jpa

13
推荐指数
1
解决办法
4万
查看次数

如何将第三方JAR打包到EJB jar中?

我有一个旧的J2EE应用程序(J2EE 1.3),它打包到EAR中,在EAR中,有WAR和EJB JAR.现在其中一个EJB JAR需要引用一些第三方库JAR,那么打包这些JAR的最佳位置是什么?

java ear java-ee

12
推荐指数
1
解决办法
1万
查看次数

根据用户权限隐藏/禁用GUI元素的最佳方法是什么?

我正在启动一个Web应用程序,客户端在纯ExtJS和Grails中间层实现.该应用程序具有基于角色的授权,用户可以拥有许多细粒度的角色,如SOME_FORM_READ,SOME_FORM_UPDATE,SOME_DATA_DELETE,SOME_DATA_READ等.根据用户的角色,某些GUI元素需要被禁用或隐藏,而其他需要处于只读模式.

我在网上做了一些搜索,但没有找到专门解决这个问题的设计模式,所以我想出了自己的设计.我相信很多网络应用程序都会有类似的要求,所以我想在这里发布我的设计并听取人们的意见.我的设计绝不是一个完美的设计,但我希望它可以通过每个人的输入得到改善.虽然我正在使用ExtJS,但一般设计也应该适用于类似的框架,如GWT,Flex,Swing等.

所以,在这里:

我们需要在客户端层中处理有关授权的四种类型的代码(或信息):

  1. GUI元素操作代码,例如:

    panel.hide()form.setReadOnly(true)

  2. GUI元素权限要求,例如:

    form.requires('READ','FORM_READ_ROLE')

    adminPanel.requires( 'ADMIN_ROLE')

  3. 用户权限信息,基本上是用户拥有的角色列表;

  4. 授权逻辑:根据用户权限确定要隐藏/禁用的元素;

设计的核心是单例,名为GUIPermissionManager,简称GPM.这是一种集中式设计,因为大多数代码都在GPM中,因此GUI元素不会受到授权代码的污染.这就是GPM的工作原理:

  • GUI元素(需要某些访问权限)通过GPM注册其权限信息,如下所示:

    GPM.register(this,'DEPARTMENT_DELETE_ROLE'); //删除部门的按钮

  • GPM维护GUI权限注册列表

  • 在用户登录时,GPM会收到分配使用的角色列表

  • GPM遍历GUI权限注册列表并基于用户权限,确定要隐藏的GUI部分,然后相应地调用element.hide()

问题:

  • GUI元素以树形层次结构组织,例如,面板包含按钮栏和表单,因此当隐藏面板时,无需进一步检查按钮栏和表单是否需要隐藏.问题:如何在GPM中注册和维护此分层信息?
  • 目前,我只能想到GUI元素的两个用例:隐藏元素或将元素设置为只读(例如表单).还有其他用例吗?
  • 在ExtJS中,为了隐藏元素,我们调用hide(),但是为了将表单设置为只读,我们必须提出我们自己的函数,假设它叫做setReadOnly(),如何让GPM知道调用哪个函数?通过该功能作为注册的一部分?
  • 将表单设置为只读的最佳方法是什么?如果我使用setReadOnly()函数扩展表单组件,将会有很多代码重复,我必须为每个需要权限控制的表单执行此操作.是否可以在GPM中创建动态表单转换器,以便在表单设置为只读时,它会自动将所有可编辑字段替换为仅显示字段?

user-interface gwt design-patterns extjs

12
推荐指数
1
解决办法
6690
查看次数

我应该在这种情况下使用Drools吗?

我将使用大学的图书馆系统来解释我的用例.学生注册库中的系统,并提供他们的个人资料:性别,年龄,部门,之前完成的课程,目前注册的课程,书籍已经借等,每本书在图书馆系统将定义基于学生的个人资料中的借贷规则,例如,计算机算法的教科书只能由目前在该课程注册的学生借用; 另一本教科书只能由数学系的学生借用; 也可能有规则,学生最多只能借2本电脑网络书.由于借用规则,当学生在图书馆系统中搜索/浏览时,他只会看到可以借用的书籍.因此,该要求实际上归结为有效生成学生有资格借阅的书籍清单.

以下是我使用Drools对设计进行设想的方法 - 每本书都有一个规则,对学生档案有一些字段限制作为LHS,书规则的RHS只是将书籍ID添加到全局结果列表,然后是所有书籍规则被加载到RuleBase中.当学生搜索/浏览图书馆系统时,会从RuleBase创建无状态会话,并且学生的个人资料被确认为事实,然后学生可以借用的每本书都会触发其图书规则并获得完整的图书清单.学生可以在全球结果列表中借阅.

一些假设:图书馆将处理数百万本书; 我不认为图书规则太复杂,平均每条规则最多3个简单的字段限制; 系统需要处理的学生数量在100K范围内,因此负载相当重.我的问题是:如果加载了一百万本图书规则,Drools会占用多少内存?所有这些百万条规则的解雇速度有多快?如果Drools是合适的,我想听听一些有经验的用户设计这样一个系统的最佳实践.谢谢.

java rules drools

9
推荐指数
2
解决办法
8427
查看次数

这个ActionScript语法是什么意思?(返回对象内联的语法)

我是一名Java程序员,现在需要处理Flex/ActionScript项目.我得到了一个使用Flex 3 Cookbook的ITreeDataDesriptor的例子,但是有一行动作脚本代码很难理解.如果有人能够进一步解释这一点我感激不尽.

public function getData(node:Object, model:Object=null):Object
    {
        if (node is Office) {
            return {children:{label:node.name, label:node.address}};
        }
    }
Run Code Online (Sandbox Code Playgroud)

我不理解的部分是"{children:{label:node.name,label:node.address}}".Office只是一个包含两个String属性的值对象:名称和地址.

apache-flex actionscript-3

4
推荐指数
1
解决办法
3802
查看次数

Flex Combobox:如何获得所选项目的价值?

我正在为美国各州使用一个组合框,链接.标签设置为状态的全名,而value属性保存缩写.我想要做的是获得所选项目的价值.所以我尝试了combo.selectedItem.value和combo.selectedItem.@ value,但它们都没有用.有人能否对此有所了解?

apache-flex flex3 actionscript-3

1
推荐指数
1
解决办法
2万
查看次数

如何拦截Linux桌面上的HTTP请求?

如果有人能给我一个如何实现这个的想法,我真的很感激.此外,是否可以为大多数流行的Linux桌面发行版(如果不是全部)提供通用实现.谢谢.

我需要实现的是像Windows服务,每次操作系统启动时都会自动运行.它的作用是拦截从浏览器发出的所有HTTP请求并记录请求URL.希望现在很清楚.

linux linux-kernel

1
推荐指数
1
解决办法
4419
查看次数