我认为我的问题与此类似,但尚未发现它可行
<f:metadata>
<f:viewParam id="id" name="id" value="#{detailsBean.id}"/>
</f:metadata>
Run Code Online (Sandbox Code Playgroud)
为什么我不能用@Named执行此操作并使用CDI:
@Named
@RequestScoped
public class DetailsBean {
private Contacts detailsContact;
@EJB
ContactsFacade contactsEJB;
private int id;
public DetailsBean() {
System.out.println("details bean called");
}
@PostConstruct
public void onLoad() {
detailsContact = contactsEJB.find(id);
}
Run Code Online (Sandbox Code Playgroud)
我无法记录身份证.
当然,@ ManagedProperty与CDI不兼容.
*****UPDATE*****
一些xhtml:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
template="../template.xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:f="http://java.sun.com/jsf/core">
<ui:define name="head">
<f:metadata>
<f:viewParam name="paginator" value="#{contactsBean.contactsTablePaginator}"/>
<f:viewParam name="rows" value="#{contactsBean.contactsTableRows}"/>
</f:metadata>
</ui:define>
<ui:define name="content">
<p:growl id="growl" showDetail="true"/> …Run Code Online (Sandbox Code Playgroud) 我在理解Weld或CDI的会话范围时遇到了一些问题.
在我的JSF Faclets页面中,我调用:
<f:metadata>
<f:event type="preRenderView" listener="#{viewBean.start}" />
</f:metadata>
Run Code Online (Sandbox Code Playgroud)
豆子:
import javax.enterprise.context.Conversation;
import javax.enterprise.context.ConversationScoped;
@Named
@ConversationScoped
public class ViewBean implements Serializable {
@Inject
private Conversation conversation;
public void start() {
if (conversation.isTransient()) {
System.out.println("START CONVERSATION");
conversation.begin();
}
}
Run Code Online (Sandbox Code Playgroud)
现在每次刷新浏览器时,都会启动一个新的对话.这是正确的行为吗?那么为什么谈话总是短暂的?没有异常被抛出.beans.xml已创建并为空:
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
Run Code Online (Sandbox Code Playgroud) 我想使用Bean验证来注释实体中的约束,现在的问题是,实体上的关系也将得到验证吗?例如,假设我有以下实体:
@Entity
@Table(name = "css_empresa")
public class Empresa extends EntidadContactable implements Serializable,
Convert {
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name = "EMPRESA_ID_GENERATOR", sequenceName = ConstantesSecuencias.SEQ_EMPRESA)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "EMPRESA_ID_GENERATOR")
@Column(name = "cod_empresa", unique = true, nullable = false)
private Long id;
@Column(name = "num_ruc", precision = 13)
private BigDecimal numRuc;
@Column(name = "num_rup", precision = 15)
private BigDecimal numRup;
@Column(name = "txt_direccion_web", length = 255)
private String txtDireccionWeb;
@NotNull
@Column(name = "txt_nombre", nullable = false, …Run Code Online (Sandbox Code Playgroud) 我已多次读过EJB的重量级...但昨晚我正在阅读有关EJB的Java EE 6教程,它们似乎只是常规的Java对象,除了它们可以有无状态或单例等注释.除此之外,它们(非常基本的)教程中包含的功能非常标准,就像MVC应用程序中的模型类一样.
我尝试从独立的swing客户端(在客户端计算机上的单独JVM中运行)连接到Glassfish服务器.
我目前使用Netbeans的以下设置,一切正常:
System.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
System.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
System.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
System.setProperty("org.omg.CORBA.ORBInitialHost", "192.168.1.3");
System.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
InitialContext context = new InitialContext();
Run Code Online (Sandbox Code Playgroud)
但是当我尝试通过键入"java -jar client.jar"从控制台启动编译的客户端时,我收到以下错误:
D:\workspace\gf-client\dist>java -jar gf-client.jar
17.08.2012 11:07:38 ch.client.core.ServerContext getInitialContext SCHWERWIEGEND: Cannot instantiate class: com.sun.enterprise.naming.SerialInitContextFactory javax.naming.NoInitialContextException: Cannot instantiate class: com.sun.enterprise.naming.SerialInitContextFactory [Root exception is java.lang.ClassNotFoundException: com.sun.enterprise.naming.SerialInitContextFactory]
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.init(Unknown Source)
at javax.naming.InitialContext.<init>(Unknown Source)
at ch.lawsuite.core.ServerContext.getInitialContext(ServerContext.java:2 7)
at ch.client.core.remote.Facades.initialize(Facades.java:68)
at ch.client.core.Client.main(Client.java:57) Caused by: java.lang.ClassNotFoundException: com.sun.enterprise.naming.SerialIni tContextFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown …Run Code Online (Sandbox Code Playgroud) 我有另一个案例就是这个问题,我有一个模型,它扩展了一个基本实体,并且该基本实体具有属性id.我使用该id作为rowKey,它会抛出此错误.当我将rowKey的值设置为模型(而不是抽象基础)中的任何属性时,数据表工作.
请注意,我正在使用JavaEE6.
型号:
@Entity
@SequenceGenerator(name = "ID_GENERATOR", sequenceName = "USER_ADDRESS_SEQ")
public class UserAddress extends BaseEntity { //.. }
@MappedSuperclass
public abstract class BaseEntity implements Serializable, IEntity {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "ID_GENERATOR")
@Column(name = "ID")
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
} ..
Run Code Online (Sandbox Code Playgroud)
JavaEE6 bean:
@Stateless
@Named
public class UserAddressBean implements Serializable {
private static final long serialVersionUID = -6104153017102665096L;
private List<UserAddress> …Run Code Online (Sandbox Code Playgroud) 我习惯于以这种方式使用EL检索上下文参数
${applicationScope.configs.parameterName}
Run Code Online (Sandbox Code Playgroud)
而且效果很好.
现在,我正在使用Tomcat 7和Java EE 6(servlet和jsp规范)的新项目,上面的例子不起作用.我创建了web.xml只是为了设置一些参数.在servlet中,我只是使用
getServletContext().getInitParameter( "parameterName" );
Run Code Online (Sandbox Code Playgroud)
并且它工作正常,但是当我尝试在我的JSP中使用第一个示例时,它不起作用,没有任何反应,就像"configs"映射不存在一样.我已经搜索了一些解决方案,但我没有找到任何东西.我尝试了几件事:
${applicationScope.initParameter.parameterName}
${applicationScope.initParameters.parameterName}
Run Code Online (Sandbox Code Playgroud)
它也不起作用.我想知道如何使用Tomcat 7(Java EE 6)在我的JSP中检索上下文参数.
我正在尝试使用此处指定的Java EE 6验证
http://docs.oracle.com/javaee/6/tutorial/doc/gircz.html
我注释了一个简单的字段
@Max(11)
@Min(3)
private int numAllowed;
Run Code Online (Sandbox Code Playgroud)
文档说"对于内置约束,可以使用默认实现"但是如何指定它.我的约束检查没有开始.我希望它能够调用字段的setter方法.我班上唯一的进口是
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
Run Code Online (Sandbox Code Playgroud)
我如何/在何处指定实施?我将约束放在一个简单的POJO而不是@Entity类的字段上,这样可以吗?
好吧,也许这对我来说是一个小问题.但我想问一下这个问题.我有一个Java Web应用程序,它通过无限循环检查来自AS400的DataQueue.如果队列中有消息,它会将消息传递给MQ,如果没有,只需继续检查.
起初这是一个好主意,但似乎当我在WAS中部署这个Web应用程序(ServletContextListener)并启动它时,我无法阻止它.也许是因为它消耗了资源.
所以也许无限循环不是答案.您是否知道在AS400 DataQueue上不断检查新消息的方法?
有没有办法在客户端缓存对远程 EJB 的引用?
在 EJB 2.x 中,它是通过缓存EJBHome来实现的。
我们在EJB 3.x中是否有任何类似的功能来缓存EJB 远程接口,该接口将在每次使用时提供 EJB(无状态会话 bean)的新实例?(在EJB 2.x中,当我们在EJBHome上调用create()方法时,我们会获得 EJB 的新实例)
java-ee-6 ×10
java ×6
ejb ×2
jsf ×2
jsf-2 ×2
cdi ×1
ejb-3.0 ×1
ejb-3.1 ×1
el ×1
glassfish ×1
ibm-midrange ×1
jakarta-ee ×1
java-ee ×1
javabeans ×1
jboss-weld ×1
jpa-2.0 ×1
jsp ×1
primefaces ×1
servlets ×1