小编stg*_*stg的帖子

在NetBeans 8中自定义数据库中的实体生成

我已经知道如何"从datatable创建实体类"以及如何使用它们等,但是创建的实体类并不完全符合我的要求.

例如

  • 我需要为ID ID字段创建额外的ID注释.
  • 类型数字(19,0)的字段应为Type Long而不是BigDecimal或类似

我想知道是否有办法改变那些实体模板?

在我的NetBeans IDE中,我找不到这样做的方法,因此禁用"在编辑器中打开"按钮,如下所示.

在此输入图像描述

那么,是否可以改变这些实体类的创建方式?如果是的话,在哪里以及如何这样做?

java templates netbeans code-generation

14
推荐指数
2
解决办法
911
查看次数

PrimeFaces selectCheckboxMenu:toggleSelect actionListener中的旧值

在我的JSF视图中p:selectCheckboxMenu,我想要通过AJAX对所选值执行某些业务逻辑.

对于一个简单的change事件,它工作正常,但对于一个toggleSelect事件没有.在我的监听器方法中,我正在检索旧的选择,但我期待这里的新选择.

请参阅以下示例:

@ViewScoped
@Named
public class RequestBean implements Serializable {
    private List<String> list; // + getter/setter

    @PostConstruct
    private void init() {       
        list = new ArrayList<String>() {{
          add("one");  add("two"); add("three");
        }};
    }

    public void listener() {
        System.out.println("Current content of \"list\":");
        for(String s : list) {
            System.out.println(s);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在JSF视图中:

<p:selectCheckboxMenu value="#{requestBean.list}" label="List">
    <f:selectItem itemValue="one" itemLabel="one"/>
    <f:selectItem itemValue="two" itemLabel="two"/>
    <f:selectItem itemValue="three" itemLabel="three"/>
    <p:ajax event="toggleSelect" listener="#{requestBean.listener}"  />
    <p:ajax event="change" listener="#{requestBean.listener}" />
</p:selectCheckboxMenu>
Run Code Online (Sandbox Code Playgroud)

现在让我们考虑以下用例:您正在进入视图,选择"一个"和"两个".如果我单击"全选"复选框,结果为:

Info:   Current …
Run Code Online (Sandbox Code Playgroud)

primefaces jsf-2

6
推荐指数
1
解决办法
1万
查看次数

@Remove 方法在有状态 EJB 中的用途

我明白,调用带@Remove注释的方法会告诉 EJB 容器,客户端不再需要有状态 EJB 的实例,并且可以在调用后删除它。

但在 Oracle JEE 教程中,此方法用于“清理”实例。例如,请参见此处:

@Stateful
public class CartBean implements Cart {
    // ...
    List<String> contents;
    // ...
    @Remove
    public void remove() {
        contents = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

(来自https://docs.oracle.com/javaee/6/tutorial/doc/bnbod.html

该成员List<String> contents;已设置为,null但我认为没有任何理由这样做。当实例被删除时,它不会杀死所有这些类型的引用吗?

我可以想象,当实例被释放时,需要执行一些业务任务,但是在调用该@Remove方法之后,它或多或少会直接调用一些@PreDestroy方法,然后我可以执行这些任务。那么为什么我们有这种特殊的@Remove方法机制,而不是像……EJBContainer.remove(myBean)

您能否澄清@Remove注释的目的和/或提供一些易于理解的用例示例,在这些示例中很明显地看到我们为什么需要这种机制?

ejb stateful-session-bean jakarta-ee

5
推荐指数
1
解决办法
1241
查看次数

Primefaces DialogFramework - 如何显示位于WEB-INF中的对话框?

我使用Primefaces DialogFramework

  • Primefaces 5.0
  • Mojarra 2.1.27
  • Glassfish 3.1.2.2 Build 5

我的问题是,如果用户知道我的对话框的位置,他可以直接通过URL访问它.我不希望这是可能的,所以我认为它可以将对话框放在我的web-app的WEB-INF文件夹中,但是现在,如果我想打开对话框,我会得到一个FileNotFound-Exception.

如果我的对话框位于某个常规文件夹中,则可以正常工作

RequestContext.getCurrentInstance().openDialog("/myfolder/mydialog"); 
// this works as expected
Run Code Online (Sandbox Code Playgroud)

但如果它位于WEB-INF中,则它不再起作用

RequestContext.getCurrentInstance().openDialog("/WEB-INF/mydialog",options,null);
// this is causing a fileNotFoundException
Run Code Online (Sandbox Code Playgroud)

我也尝试为此设置导航规则faces-config但是再次没有成功

<navigation-case>
    <from-outcome>mydialog</from-outcome>
    <to-view-id>/WEB-INF/mydialog.xhtml</to-view-id>
    <redirect />
</navigation-case>
Run Code Online (Sandbox Code Playgroud)

我如何打开位于WEB-INF文件夹中的对话框,或者根本不可能?提前致谢

dialog web-inf primefaces jsf-2

4
推荐指数
1
解决办法
2186
查看次数

为什么GlassFish 4.1推荐使用Java 8 JDK?

在GlassFish主页上说明了这一点

Java EE 7需要JDK 7或更高版本,建议GlassFish 4.1使用JDU 8 u20或更高版本.

所以我想知道,为什么建议在JDK 8下使用它,因为GlassFish 4.1是一个Java EE 7应用服务器?

是否因为我将能够使用新的Java 8功能?或者有更深层次的原因,比如稳定性,知道错误等等.那么GlassFish 在JDK 8上的运行效果确实比在JDK 7上运行得更好,或者我可以忽略这个语句并将其安装在JDK 7下,如果我不使用Java SE 8下提供的新功能?

java glassfish java-ee

3
推荐指数
1
解决办法
6413
查看次数

如何使用Client Side API设置p:selectOneRadio的值?

在我的JSF视图中,我使用的是p:selectOneRadio.现在我必须在客户端更改此组件的值作为副作用.在这个组件的Client Side API中,我发现以下内容,如果我找到了正确的方法,我认为我可以使用它:

PrimeFaces.widget.SelectOneRadio=PrimeFaces.widget.BaseWidget.extend(
{
    // ...      
    select:function(a){
        this.checkedRadio=a;
        a.addClass("ui-state-active")
         .children(".ui-radiobutton-icon")
         .addClass("ui-icon-bullet").removeClass("ui-icon-blank");
        a.prev().children(":radio").prop("checked",true)}
});
Run Code Online (Sandbox Code Playgroud)

对我来说(没有太多关于JS的知识)看起来我必须传递类似于我想要选择的单选按钮的实例.我已经通过多种方式尝试过这种方法,但它们都不起作用:

<p:selectOneRadio widgetVar="sel" id="id-sel" >                
        <f:selectItem itemValue="#{false}" itemLabel="n/a" />
        <f:selectItem itemValue="#{true}" itemLabel="date" />
</p:selectOneRadio>               

<p:commandButton onclick="PF('sel').select(sel.inputs[1]);"/>
<p:commandButton onclick="PF('sel').select(PF('sel').inputs[1]);"/>
<p:commandButton onclick="PF('sel').select( $('input:radio[id*=id-sel\\:1]') );"/>       
<p:commandButton 
      onclick="PF('sel').select(document.getElementById('menuform:id-sel:1'));"/>  
Run Code Online (Sandbox Code Playgroud)

但是,我也尝试直接传递值和/或标签(这适用于selectOneMenu).再次没有成功(但在这种情况下并不奇怪)

<p:commandButton onclick="PF('sel').select('date');"/>
<p:commandButton onclick="PF('sel').select('true');"/>
<p:commandButton onclick="PF('sel').select(1);"/>
<p:commandButton onclick="PF('sel').select(true);"/>
<p:commandButton onclick="PF('sel').select(#{true});"/>
Run Code Online (Sandbox Code Playgroud)

谁知道该怎么办?

javascript jquery client-side primefaces selectoneradio

3
推荐指数
1
解决办法
2596
查看次数

将完整实体标记为“ updatable = false”

在一个应用程序中,有多个实体类,对于这些实体类,应禁止对数据库的更新语句。我想插入数据库并从中读取数据,但是从不对现有记录进行任何更新。

有没有办法将整个@Entity班级标记为updatable=false

  • 可以使用@Column(updatable=false)或类似的注释来注释每个字段,但是出于明显的原因,我想避免这种情况。

  • 摆脱setter方法也不是一种选择,因为实体类也用作DTO,而应用程序的其他部分则需要这些setter。因此,这将导致大量重构现有代码。

是否有另一种简单明了的方法来实现我想要的JPA 2.1 / EclipseLink(+ Extensions)

jpa eclipselink

3
推荐指数
1
解决办法
607
查看次数

激活操作后,选项卡视图中的Primefaces确认dialolog不会隐藏

我的确认对话框出了问题.单击确认按钮后它不会关闭.如果我的表单位于选项卡视图中,则只会发生这种情况.(令人兴奋的是,如果我的表单不在标签视图中,但只有一个面板或类似的东西,那么一些代码可以正常工作.)

        <h:form id="timingTableForm">
            <p:dataTable var="item" value="#{requestBean.rmRequest.timingList}" id="timingDataTable" editable="true">
             // some dataTable 
            </p:dataTable>
            <p:confirmDialog closable="true" appendToBody="true" id="confirmDialog" message="#{msg.conf_deleteyesno}" header="#{msg.conf_header}" severity="alert" widgetVar="confirmation">  
                <p:commandButton id="confirm" value="#{msg.btn_yessure}" update="timingTableForm" oncomplete="confirmation.hide()" actionListener="#{requestBean.deleteTiming}" process="@this"/>  
                <p:commandButton id="decline" value="#{msg.btn_notyet}" onclick="confirmation.hide()" type="button" />   
            </p:confirmDialog>
        </h:form>
Run Code Online (Sandbox Code Playgroud)

如果我将"oncomplete"更改为"onclick"它也可以正常工作,但我希望对话框在服务器端操作完成之前不会消失.

当我按下确认按钮时,在生成的HTML中发生了一些奇怪的事情:

<div id="mainTabView:timingTableForm:confirmDialog" class="ui-confirm-dialog ui-dialog ui-widget ui-widget-content ui-overlay-hidden ui-corner-all ui-shadow" style="width: auto; height: auto;">

<div id="mainTabView:timingTableForm:confirmDialog" class="ui-confirm-dialog ui-dialog ui-widget ui-widget-content ui-corner-all ui-shadow ui-overlay-visible" style="width: auto; height: auto; left: 994.5px; top: 186px; visibility: visible; z-index: 1006;">
Run Code Online (Sandbox Code Playgroud)

将呈现一个与我的确认对话框具有相同ID的新div.结果是一个隐藏的确认diolog(如预期的那样),但是还有一个仍然可见的新对话框.如果我再次按下确认按钮,我有2个隐藏的符合对话框和1个可见对话框等等...

难道我做错了什么?你能发现任何错误吗?或者这可能是素数面板中的错误?

  • Primefaces 3.4.1
  • 在GlassFish 3.1.2上运行
  • 浏览器Firefox 16.0.2

先谢谢你,Fant …

jsf primefaces jsf-2

2
推荐指数
1
解决办法
6640
查看次数

状态字段路径无法解析为集合类型

在我的实体模型中,我有一个 ManyToMany RelationUserUserGroup User 是一个公共@Entity类,而是UserGroup一个 Java enum

映射看起来像这样:

@ElementCollection(targetClass = my.package.UserRight.class, fetch = FetchType.EAGER)
@Enumerated(EnumType.STRING)    
@CollectionTable(name = "MD_USER_RIGHTS", joinColumns = @JoinColumn(name = "REF_USER_ID"))
@Column(name = "USER_GROUP")
@Getter @Setter private Set<UserRight> userGroups;
Run Code Online (Sandbox Code Playgroud)

除非我尝试访问通过 JPQL 设置的用户组,否则一切正常。我不想将来自用户实体的所有信息暴露给下一层,所以我编写了一个简单的 JPQL 查询来从我的用户实体创建一些 DTO:

简化:

public List<UserDTO> findAllActive() {
    Query q = em.createQuery("SELECT NEW my.package.UserDTO(m.name, m.id, m.userGroups) 
                              FROM User m ");
    return q.getResultList();
}
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.0.v20150309-bf26070): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Problem compiling [SELECT NEW …
Run Code Online (Sandbox Code Playgroud)

jpa eclipselink jpql

1
推荐指数
1
解决办法
1426
查看次数