首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Seam3的面孔

使用Seam3的面孔
EN

Stack Overflow用户
提问于 2012-12-04 04:45:56
回答 1查看 77关注 0票数 0

我有1个Entity和1个带有ConversationScopeNamed Bean,我创建了一个带有保存按钮的jsf form,我的问题是,为什么当我的表单通过@injected发布我的实体时,实体bean的属性(ArticuloController属性)没有被注入。存在类似于seam2的@in注释的cdi,用于填充@inject Entity entity

这是我的源代码:

代码语言:javascript
复制
@Entity
@Named("articulo")

public class Articulo implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "articulo_seq")
    @SequenceGenerator(name = "articulo_seq", sequenceName = "articulo_seq")
    private Integer articulo;

    private String descripcion="";

//my action class

@Named("articuloController")
@ConversationScoped

public class ArticuloController implements Serializable {

    @Inject
    private Articulo articulo;

    @Inject
private Messages messages;


@Begin
public String init() {
    messages.info("init conversation");
    //this values is not show in the jsf form
    articulo.setDescripcion("complete descripcion");
    articulo.setPrecio(new BigDecimal(0));
    return null;
}

public String save() {
        //the values of the properties is not the values filled by user, 
        //but is the values filled by init method
        System.out.println("save!" + articulo.getDescripcion()
            + articulo.getPrecio() + " " + id);

    return null;
}

my jsf page is


<f:metadata>
            <f:viewParam name="id" value="#{articuloController.id}" />
            <s:viewAction action="#{articuloController.init}" />
        </f:metadata>
        <h:form>
        <h:panelGrid columns="3" id="panel">


            <h:outputLabel value="Descripcion" />

            <h:inputText value="#{articulo.descripcion}" id="descripcion"
                required="true" label="Descripción" />

            <rich:message for="descripcion" />

            <h:outputLabel value="Precio" />

            <h:inputText value="#{articulo.precio}" id="precio" required="true"
                label="Precio" />

            <rich:message for="precio" />

            <h:commandButton value="Guardar" action="#{articuloController.save}" />

        </h:panelGrid>
</h:form>

更新:我使用的是seam3 3.1.0 using

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-04 22:10:40

以这种方式混合JPA和CDI是一个非常糟糕的想法。如果你这样做,就不能正确地保存东西,而且到处都会有异常。您需要做的是从entity中删除@Name并为其创建一个生产者。您还需要向生产者添加一个作用域注释,请求或对话可能会很好地工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13691391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档