- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对将角色用于我的接缝组件的不同范围有疑问。例如:
我的项目有一个名为 Parameter 的表,该表将项目的所有全局参数存储为 URL、管理电子邮件等...对于该表,有一个用于管理的简单 CRUD 界面。
因此,阅读seam 2.1.2文档后,我明白我应该有一个具有应用程序范围的seam组件,因为参数将适用于所有项目和另一个范围,用于CRUD管理,一个事件范围。
1) 这是正确的吗?2)范围必须在EntityBean或SessionBean上定义??
代码:
@Scope(ScopeType.APPLICATION)
@Name("parametroSB")
public class ParametroSB implements java.io.Serializable{
private static final long serialVersionUID = 1L;
@DataModel
private List<Parametro> lstParametro;
@In (required=false)
@Out
@DataModelSelection
private Parametro parametro;
@In
private EntityManager entityManager;
@In
private Events events;
@Logger
private static Log log;
@SuppressWarnings("unchecked")
@Factory("lstParametro")
@Observer("recarregaListaParametro")
public List<Parametro> getLstParametro() {
StringBuilder strHQLBuilder = new StringBuilder("select p from Parametro p where 1=1 ");
strHQLBuilder.append((parametro.getNome() != null && !parametro.getNome().equals("")) ? "and p.nome=#{parametro.nome} " : "");
strHQLBuilder.append((parametro.getValor() != null && !parametro.getValor().equals("")) ? "and p.valor=#{parametro.valor} " : "");
strHQLBuilder.append((parametro.getPais() != null && parametro.getPais().getId() > 0) ? "and p.pais.id=#{parametro.pais.id} " : "");
lstParametro = (List<Parametro>) entityManager.createQuery(strHQLBuilder.toString()).getResultList();
if (lstParametro.size() == 0 ){
FacesMessages.instance().add("Nenhum registro encontrado");
}
return lstParametro;
}
public void setLstParametro(List<Parametro> lstParametro) {
this.lstParametro = lstParametro;
}
@SuppressWarnings("unchecked")
public void delete(){
try{
if (parametro != null && parametro.getId() > 0){
//busca o objeto no banco. Necessario para fazer a exclusão
parametro = entityManager.find(Parametro.class, parametro.getId());
//exclui o objeto do banco
entityManager.remove(parametro);
//limpa o DataModelSelection
parametro = new Parametro();
//informa mensagem de sucesso
FacesMessages.instance().addFromResourceBundle("prepark.parametro.exclusao.sucesso");
//chama um evento para atualizar a lista
//events.raiseTransactionSuccessEvent("recarregaListaParametro");
}
}catch(Exception e){
FacesMessages.instance().add("Foi encontrado um erro na aplicação. Entre em contato com o Administrador");
}
}
/**
* @author : Cateno Viglio
* Método responsavel por fazer a persistencia no banco para uma inclusão e alteração.
* Caso o objeto Parametro não possua id, será feito um insert no banco.
*/
public void insert(){
Boolean blInsert = null;
try{
//verifica se esta sendo feito um insert ou update na base
blInsert = (parametro == null) ? null : ((parametro.getId() > 0) ? Boolean.FALSE : Boolean.TRUE );
if (blInsert != null){
//executa o insert ou update
entityManager.merge(parametro);
//limpa o DataModelSelection
parametro = new Parametro();
if (blInsert){
FacesMessages.instance().addFromResourceBundle("prepark.parametro.inclusao.sucesso");
events.raiseTransactionSuccessEvent("recarregaListaParametro"); //chama um evento para atualizar a lista
}else{
FacesMessages.instance().addFromResourceBundle("prepark.parametro.alteracao.sucesso"); //informa mensagem de sucesso
}
}
}catch(Exception e){
FacesMessages.instance().add("Foi encontrado um erro na aplicação. Entre em contato com o Administrador");
}
}
/**
* @author : Cateno Viglio
* Metodo responsavel por fazer a chamada a pagina de alteração.
*/
public void select(){}
}
@Scope(ScopeType.APPLICATION)
@Name("parametro")
@Table(name="parametro")
@Entity
public class Parametro implements java.io.Serializable{
private static final long serialVersionUID = 1L;
@Id
private int id;
@NotNull @Length(min=5, max=45)
@Column(name="NM_PARAMETRO")
private String nome;
@NotNull @Length(min=5, max=255)
private String valor;
@ManyToOne
@JoinColumn(name="FK_PAIS")
private Pais pais = new Pais();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getValor() {
return valor;
}
public void setValor(String valor) {
this.valor = valor;
}
public Pais getPais() {
return pais;
}
public void setPais(Pais pais) {
this.pais = pais;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Parametro other = (Parametro) obj;
if (id != other.id)
return false;
return true;
}
}
最佳答案
1) 这是正确的。如果这是整个应用程序的全局数据,请使用应用程序范围。
2) 您不需要将范围放入实体 Bean 中。由于您是从应用程序范围的 SFSB 注入(inject)和输出,因此它会自动从应用程序范围注入(inject)/输出。
但是您必须以某种方式创建初始实例(也许使用工厂)。
关于java - 关于Seam上下文范围的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1407504/
这可能是一个糟糕的问题,但我还没有找到任何好的教程来展示如何创建一个用于 eclipse 的 seam 3 项目。我看到我需要 maven、jboss、seam 3 和 eclipse helios.
我正在使用 Seam 3 构建一个新项目。我不明白 Weld 原型(prototype)和 Seam Forge 之间的区别。它们都帮助我们构建一个简单的项目模板。 最佳答案 Seam Forge 是
关于标题的一个简单问题。 我的情况是我想听“在 RENDER_RESPONSE 之前”阶段,并改变一些组件的内部状态。 PhaseListener 是在 SEAM 应用程序中执行此操作的“正确方法”吗
有谁知道我是否可以将 pages.xml 中的值注入(inject) Seam 组件?在 pages.xml 中似乎有一个 in 元素表明我可以,但我不知道如何使用它并且缺少文档。 我正在尝试在因页面
我一直在使用带有小型示例数据库的 Seam-gen 来帮助我学习 Seam 框架。现在我要构建一个更复杂的应用程序。如果我决定从 seam-gen 项目开始,是否有缺点或应该注意的事项? 最佳答案 A
我需要为我站点中的所有页面设置一个 HTTP 响应 header ,我不知道 seam 是否在配置文件中提供了一些 Hook 来做到这一点,或者?以前有人这样做过吗? 谢谢。 最佳答案 我无法在任何地
我正在启动新的企业应用程序。我选择了以下技术:jee6(jsf + primefaces,ejb)和hibernate。我将部署在 Glassfish 3 上。 问题是我应该选择哪个 Seam 版本?
我找不到像样的 Seam 3 教程。现在 Seam 是以模块的形式分布的,但官方文档有点模糊和薄弱……涵盖了所有模块,描述了每个模块,但没有具体内容,如何将它们组合在一起,如何使用 Seam 3 开发
谁能比较和对比这两种解决方案?我不太了解 Seam 或 JSF,但我熟悉 GWT 的工作方式并且非常喜欢它的理论。 主要关注点: 可扩展性/性能 跨浏览器兼容性 学习曲线 生产力 所见即所得的 UI
问题几乎说明了一切,尽管我明确地在寻找我可能会错过的关于 Java EE 6 环境中的 Seam 2 的东西(“损失”)。 对于我最新的(小型)项目,JavaEE 6 或更具体地说 JSF 2 是一个
我正在 WildFly 8 (Java EE 7) 上从 Seam 3 迁移到 DeltaSpike。与 Seam 的 seam-beans.xml 等效的 DeltaSpike 文件是什么?你能告诉
我无法找到此 jar 的 POM 依赖项 - org.jboss.seam-jboss.seam-2.2.2.GA.jar 如果有人遇到过这种情况,可以帮忙吗?谢谢。 最佳答案 您需要在您的 mave
我正在使用maven添加依赖项。我添加了 org.jboss.seam jboss-seam 2.3.5.Final-redhat-1 jboss-seam jar 通过在 p
即使我已将范围类型指定为方法,它也会在 CONVERSATION 范围内实例化。 > UserHome userHome = (UserHome) Component.getInstance(User
我有时会在 session 范围内的组件上收到此错误,但仍未弄清楚导致此失败的原因。有任何想法吗? ERROR [Exceptions] handled and logged exception ja
我正在使用 Seam 并收到“并发调用对话”错误。这是什么意思? 我有一个需要 5 分钟来处理的按钮。我在 2 分钟内收到此错误。将并发请求超时设置为 10 分钟似乎不起作用。有没有办法阻止所有其他请
我正在尝试创建一个包含3个下拉菜单和一个文本区域的表单。我正在使用对话作为范围。当用户单击“提交”按钮时,我结束对话。我面临的问题是后退按钮问题。单击后退按钮时,将记住先前的数据。如果尝试从下拉菜单中
for (...) { UserList userList = (UserList) Component.getInstance(UserList.class, ScopeType.METHO
我成功地创建了一个使用 Seam 凭据进行身份验证的项目,但现在一些要求发生了变化(像往常一样),我需要自动对用户进行身份验证。请参见下面的示例: 用户调用页面: http://server:port
我需要在 Seam 中实现相当大的系统。我正在考虑设计架构的方式。如果使用页面 Controller 或应用程序 Controller 或前端 Controller 或每个 Controller 都很
我是一名优秀的程序员,十分优秀!