介绍
我基本上来自开发团队的两个方面.我开始使用PHP构建Web应用程序.这样,我必须手工实施一切.表单,图形元素,所有内容如何捆绑在一起(即单击按钮时会发生什么).
另一方面,前段时间我进入了Java Web世界,即JSF.在我看来,这是构建"严肃"应用程序的好方法.(为什么我这么认为,请阅读下文)
问题
我想构建一个Web应用程序,它由一个很好的和可用的前端组成,它是按照我的规范设计的(基本上尽可能地将HTML和图形布局作为水平原型 - 然后制作一个完整的webapp它).但另一方面,我想用Java做所有的业务逻辑,因为它有许多不错的框架--Hibernate,Morphia,Lombok,Dozer,仅举几例,我遇到并爱上了.
我可以自己用JSF构建前端,但我仍然认为,我太有限了,因为我必须使用只能定制到一定数量的内置组件.如果我想使用自己的设计模式和UI元素和行为但仍希望它们与Java"后端"一起工作,该怎么办?
实现目标的"最佳"工具选择是什么?选择不同的网络框架,如Wicket或类似?
我的想法:用Java构建一个Web应用程序,它理解好旧的GET命令并将其转换为Java方法.排序RESTful服务的-虽然我不是做一个伟大的球迷都在前端REST风格的-除非你告诉我,这很好,可靠.
我目前正在将一个项目从JBoss 4.2.2迁移到JBoss 6.0.0,我还在使用CDI添加依赖注入,并从JSF 1.2迁移到JSF 2.0.我将一个beans.xml文件添加到ejb-package以及war-package中.
现在我有一个使用托管bean的xhtml页面LoginBean.java
.已经在faces-config.xml中配置了bean,如下所示:
<managed-bean>
<description>Sample description</description>
<managed-bean-name>loginBean</managed-bean-name>
<managed-bean-class>com.sample.managedbeans.LoginBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Run Code Online (Sandbox Code Playgroud)
所以,首先我删除了上面的配置并添加@ManagedBean @SessionScoped
到类本身.因为我想CDI添加到项目中,我改变了@ManagedBean
对@Named
(与质疑2930889).
现在,当我提交相应xhtml的表单时,字段username和password(在JSP中使用#{loginBean.username}
)为null.当我改回来时@ManagedBean
,它工作正常.
我在这里错过了什么吗?
亲切的问候,塞巴斯蒂安
我想向我们的项目介绍CDI(Weld),现在手动构建的对象遇到了一些麻烦.
所以我们有一些实现IReport
接口的类,它有一个应该注入的字段.因为所有这些类是由产生这是在运行时零ReportFactory
一类ReportController
.
private Map<String,Object> generateReport(ReportInfo ri, ...) {
// some input validation
IReport report = ReportControllerFactory.getReportInstance( ri.getClassName() );
// ...
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以将@Produces
注释与另一个自定义注释一起使用ReportControllerFactory
,但是如何在一个方法中使用@Inject
for只能在完成一些验证之后创建的变量?我将如何提交参数?构造时对象是未知的.ri.getClassName()
ri
ReportController
非常感谢你!
亲切的问候,塞巴斯蒂安
编辑于2011年7月8日(10:00):
ReportFactory类:
public static IReport getReportInstance( String className ) throws ReportException {
IReport report = null;
try {
Class<?> clazz = Class.forName( className );
report = (IReport) clazz.newInstance();
}
catch ( Exception e ) { … }
return report; …
Run Code Online (Sandbox Code Playgroud) 我想查看下面的内容:
if params[:hidval] > "0"
OR
if !params[:hidval] < "1"
Run Code Online (Sandbox Code Playgroud)
但它给了我错误如下:
undefined method `>' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
如何检查轨道上红宝石的上述条件?