我对Spring比较陌生,我自己也挖了个洞.我正在试图塑造汽车.每个模型都有自己的构建器对象,我有一个BuilderFactory,它根据用户从web-app中选择返回正确的构建器.
因此,我正在寻找有关如何解决这个问题的建议,我需要创建一些单独的车辆,但我不知道在运行时我需要什么类型的车辆,并且每辆车都需要对用户来说是独一无二的
我现在得到的内容如下所示.我现在面临的问题是,因为个别建筑商都是单身人士,所以个别车辆也是如此.我需要它们作为原型.我知道这一切看起来都非常糟糕,所以我相信一定有更好的办法.
网络应用程序的顶级看起来像;
Vehicle vehicle = vehicleBuilderFactory.getBuilder(platform).build();
Run Code Online (Sandbox Code Playgroud)
我的vehicleBuilderFactory看起来像这样;
@Service
public class VehicleBuilderFactory {
@Autowired
Discovery3Builder discovery3Builder;
@Autowired
Discovery4Builder discovery4Builder;
// Lots of @Autowired statements here.
@Autowired
FreeLander2010Builder freeLander2010Builder;
public VehicleBuilder getBuilder(Platform platform) {
switch (platform.getId()) {
case 1: return discovery3Builder;
case 2: return discovery4Builder;
// Lots of case statements here
case 44: return freeLander2010Builder;
default: return null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这本身看起来很可怕.每个建筑师看起来像;
@Service
public class DefenderBuilder implements VehicleBuilder {
@Autowired
Defender defender;
// Loads of Defender specific setters ommitted
@Override …Run Code Online (Sandbox Code Playgroud) 我有一个简单的类,我想使用modelMapper映射到DTO类.
class Source {
private String name;
private String address;
List<Thing> things;
// getters and setters follows
}
class Thing {
private String thingCode;
private String thingDescription;
// getters and setters
}
Run Code Online (Sandbox Code Playgroud)
我想将这些转换为包含ThingDTO列表的sourceDTO
class sourceDTO {
private String name;
private String address;
List<ThingDTO> things;
// getters and setters.
}
class ThingDTO {
private String thingCode;
private String thingDescription;
// getters and setters
}
Run Code Online (Sandbox Code Playgroud)
如果我删除我的物品列表和ThingsDTO列表,那么modelmapper是一个令人愉快的使用,
modelMapper.map(source, SourceDTO.class);
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何让映射器将事物列表转换为ThingDTO列表.从文档中,我认为我需要创建一个扩展PropertyMap的mapper类,但我无法弄清楚如何配置它.
欢迎提供相关文档的任何指示
我正在使用带有Spring 3后端的Struts 2开发一个Web应用程序.我正在使用Spring aop:代理bean来处理我的会话bean而不是Struts 2 SessionAware接口.一切都工作正常,直到我有一个在Struts ExecAndWait拦截器下运行的Action.因为这个拦截器实际上是在一个单独的线程下运行我的动作,当我来尝试访问我的代理会话bean时,我得到一个BeanCreationException/IllegalStateException.在这种情况下,是否还有另一种"弹簧方式"可以抓住我的会话bean?
问候
我有一个类在构造函数中获取List;
public class MyClass {
private List<Structure> structures;
public MyClass(List<Structure> structures) {
this.structures = structures;
}
}
Run Code Online (Sandbox Code Playgroud)
我需要通过反射实例化.如何定义对class.getConstructor()的调用来查找它?
问候
我正在使用JQuery,我正试图找到一种用ajax加载的内容替换整个页面的方法.我已经找到了建议如何从加载页面执行此操作的答案,但如果可能的话,我希望从加载的页面中执行此操作.
我有一个使用大量ajax调用的webapp.问题是如果用户在这样的页面并且漫游足够长时间以触发会话超时,那么应用程序使会话无效,并且当用户下次与所显示的页面交互时,系统返回主页,要求他们再次登录.当然 - 主页显示嵌入在他们上次查看的任何页面中而不是替换它.有什么我可以放在我的主页上,以确保它总是替换整个页面,而不是检查每个ajax调用主页返回?
今天上午开始工作,当我尝试启动Eclipse(Helios)时,我得到工作区启动器显示,点击OK后 - 启动过程终止.日志文件包含我在下面列出的堆栈跟踪.
我查看了工作区.metadata目录,文件夹org.eclipse.mylyn.internal.provisional.commons.ui不存在.我上周在Eclipse工作时进行备份,备份副本中也不存在该文件夹.
我如何让Eclipse立即开始?
!SESSION 2013-02-01 09:18:10.843 -----------------------------------------------
eclipse.buildId=M20110210-1200
java.version=1.7.0_11
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_GB
Framework arguments: -product org.eclipse.epp.package.jee.product
Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.jee.product
!ENTRY org.eclipse.osgi 4 0 2013-02-01 09:18:20.906
!MESSAGE An error occurred while automatically activating bundle org.eclipse.mylyn.tasks.ui (651).
!STACK 0
org.osgi.framework.BundleException: Exception in org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin.start() of bundle org.eclipse.mylyn.tasks.ui.
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:806)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:284)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:417)
at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:265)
at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:106)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:453)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469) …Run Code Online (Sandbox Code Playgroud) 我需要从Jquery Datatables的隐藏列中获取已选中复选框的值(在第一个可见列中).到目前为止我已经有了
bodytable$ = $('#dataTable').dataTable({
"bJQueryUI" : true,
"bPaginate" : true,
"bSort" : false,
"bFilter": false,
"aoColumns": [{"bVisible": false},
{"bVisible": true},
{"bVisible": true},
{"bVisible": true}],
"oLanguage": {
"sEmptyTable": '',
"sInfoEmpty": '',
"sZeroRecords": ''
}
});
Run Code Online (Sandbox Code Playgroud)
我从隐藏列中获取值
var checkIds = [];
$('input[type="checkbox"]:checked', bodytable$.fnGetNodes()).each(function(i){
var tr = $(this).closest('tr');
var rowData = bodytable$.fnGetData(tr);
checkIds.push(rowData[0]);
});
alert(checkIds);
Run Code Online (Sandbox Code Playgroud)
这行失败了行var rowData = bodytable $ .fnGetData(tr); 使用Firefox调试给出错误消息TypeError:a.nodeName未定义
我必须通过DataTable API,因为隐藏列实际上并没有出现在加载到浏览器中的html中,因为我希望能够在所选复选框不在同一页面时选择数据值.
继mainguys响应,并使用CSS隐藏列而不是bVisible属性,我现在可以得到我想要的东西;
var checkIds = [];
$('input[type="checkbox"]:checked', bodytable$.fnGetNodes()).each(function(i){
var tr = $(this).closest('tr');
checkIds.push($(tr).find('td:eq(0)').text());
});
alert(checkIds);
Run Code Online (Sandbox Code Playgroud) 在显示服务器视图中,我列出了两台服务器。两者都用于通过显示“[stopped]”或“[started]”以及显示服务器是否在调试模式下启动来显示服务器状态。
今天 - 只有一台服务器显示此信息,所以不知何故,我设法关闭了第二台服务器的此信息显示。
我是如何做到这一点的,更重要的是,我如何再次打开它 - 无法一目了然地看到这些信息是一种痛苦。
我试图SpringJunit4ClassRunner通过使用@Transactional注释来测试我的DAO类,而不会在完成后留下数据.我的DAO类包含(剥离):
@Repository
public class IdsFunctionJpaController {
@PersistenceContext
EntityManager em;
public void save(IdsFunction function) {
if (function.getId() == 0) {
create(function);
} else {
update(function);
}
}
@Transactional
private void create(IdsFunction idsFunction) {
try {
em.persist(idsFunction);
}
catch (Exception e) {
System.out.println(e);
} finally {
em.close();
}
}
@Transactional
private void update(IdsFunction function) {
try {
em.merge(function);
} finally {
em.close();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的首发JUnit测试用例是
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/applicationContext.xml"} )
public class IdsFunctionJpaControllerTest {
@Autowired
IdsFunctionJpaController dao;
@Test
@Transactional …Run Code Online (Sandbox Code Playgroud) 我正在使用Spring Security 3和我的ApplicationContext-Security.xml指定
<form-login login-page="/genesis" default-target-url="/diagnostics/start-diagnostics"
authentication-failure-url="/genesis?authfailed=true"
authentication-success-handler-ref="customTargetUrlResolver"/>
<access-denied-handler error-page="/genesis?notauthorized=true"/>
<logout logout-success-url="/genesis"/>
<session-management session-authentication-error-url="/genesis">
<concurrency-control max-sessions="1"/>
</session-management>
Run Code Online (Sandbox Code Playgroud)
然而,当我登录到我的第二个浏览器的应用程序,然后当我尝试做任何事情,我得到一个纯白色的屏幕与消息"此会议已过期(可能由于正在尝试多种并发登录回到我的第一个浏览器作为同一个用户"
如何配置Spring Security 3以显示我自己的"您已断开连接"的URL?
java ×3
spring ×3
eclipse ×2
jquery ×2
ajax ×1
datatables ×1
javabeans ×1
jpa ×1
junit ×1
modelmapper ×1
reflection ×1
scope ×1
struts2 ×1