小编Ion*_*nut的帖子

比较JPA Criteria API中的Date实体

将JPA 2与EclipseLink实现一起使用.

我正在尝试构建一个动态查询,它应该会在给定日期之后保留一些记录.

CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Event> criteria = builder.createQuery(Event.class);
Root<Event> root = criteria.from(Event.class);
criteria.select(root);
criteria.distinct(true);
List<Predicate> predicates = new ArrayList<Predicate>();
//...
if (dateLimit != null){
    ParameterExpression<Date> param = builder.parameter(Date.class, "dateLimit");
    predicates.add(builder.lessThanOrEqualTo(root.get("dateCreated"), param));
}
Run Code Online (Sandbox Code Playgroud)

lessThanOrEqualTo()并且le()是仅有的两个方法,在API中看起来像可以帮助我在这种情况下.这个警告是由日食引发的:

Bound mismatch: The generic method lessThanOrEqualTo(Expression<? extends Y>, Expression<? extends Y>)
of type CriteriaBuilder is not applicable for the arguments (Path<Object>, ParameterExpression<Date>).
The inferred type Object is not a valid substitute for the bounded parameter
<Y extends Comparable<? super Y>>
Run Code Online (Sandbox Code Playgroud)

我可以想象我没有采取正确的方法解决这个问题,但我无法找到任何可能解决方案的提示或指示.

java date criteria-api jpa-2.0

45
推荐指数
2
解决办法
8万
查看次数

如何有条件地呈现像<div> s这样的纯HTML元素?

我正在尝试实现一个复合组件,该组件以纯文本显示用户的信息详细信息,或者如果所需的详细信息是当前连接的用户的详细信息,则通过可编辑的输入文本字段显示它们.

我知道al UI Components可以通过渲染属性渲染,但是那些不是UI组件的东西(例如div)

<div class = "userDetails" rendered = "#{cc.attrs.value.id != sessionController.authUser.id}">
    Name: #{cc.attrs.value.name}
    Details: #{cc.attrs.value.details}
</div>

<div class = "userDetails" rendered = "#{cc.attrs.value.id == sessionController.authUser.id}">
    <h:form>
        ...
    </h:form>
</div>
Run Code Online (Sandbox Code Playgroud)

我知道div没有渲染属性,可能我根本没有采用正确的方法.我可以很容易地使用JSTL标签,但我想避免这种情况.

html jsf-2 conditional-rendering

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

@PostConstruct方法为同一请求调用两次

我正在使用JSF 2.0和GlassFish 3.0.

我有以下Managed Bean:

@ManagedBean
@RequestScoped
public class OverviewController{

    private List<Event> eventList;

    @PostConstruct
    public void init(){
        System.out.println("=> OverviewController - init() - enter");

        System.out.println("=< OverviewController - init() - exit");
    }
}
Run Code Online (Sandbox Code Playgroud)

overview.xhtml文件中,我从OverviewController中调用了不同的属性或方法.

<ui:repeat var="event" value="#{overviewController.eventList}">
    ...
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)

一切正常,但问题出在日志文件中:

INFO: Enter : RESTORE_VIEW 1
INFO: Exit : RESTORE_VIEW 1

INFO: Enter : RENDER_RESPONSE 6
INFO: => OverviewController - init() - enter
INFO: => Overview Controller - updateSelectedTab() - enter
INFO: =< Overview Controller - updateSelectedTab() - exit
INFO: =< …
Run Code Online (Sandbox Code Playgroud)

java jsf postconstruct jsf-2

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

在JPA2中处理DateTime

我正在使用JPA2和EclipseLink实现.我只是想将当前Date保存到DateTime列到MySQL数据库中.

应该持久化的日期对象只是创建:

import java.util.Date
Date currentDate = new Date();
Run Code Online (Sandbox Code Playgroud)

现在currentDate包含确切的日期和时间.此对象持久存在于具有以下列的表中:

@Column(name="DATE_CREATED")
@Temporal(TemporalType.DATE)
Date dateCreated;
Run Code Online (Sandbox Code Playgroud)

TemporalType有三个常量:

  • DATE- 这将DB保存在没有任何时间的日期:(2012-02-23 00:00:00)
  • TIME - 这会引发不兼容错误
  • TIMESTAMP- 这将DB保存在没有任何时间的日期:(2012-02-23 00:00:00)

数据库列以这种方式创建:

date_opening DATETIME NULL DEFAULT NULL,

对于所有这些选项,我无法保存时间和日期.

java datetime jpa-2.0

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

@ManyToOne映射无法保存父ID

我正在使用JPA2和EclipseLink实现

![简单的桌面结构] [1]

以下是我尝试映射的两个表和JPA注释.

public class Story implements Serializable{
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    Integer id;
    @Temporal(TemporalType.TIMESTAMP)
    @Column (name="DATE_CREATED")
    Date dateCreated;
    String title;
    String description;
    @Column(name="AUTHOR_ID")
    Integer authorId;
    @Column(name="COUNTRY_ID")
    Integer countryId;
    private String reviews;

    @OneToMany(mappedBy = "story", cascade=CascadeType.ALL)
    private List<Tip> tipList;
}

public class Tip implements Serializable{
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Integer id;
    private String description;
    private Integer vote;

    @ManyToOne (cascade=CascadeType.ALL)
    @JoinColumn(name="STORY_ID", referencedColumnName="ID")
    private Story story;
}
Run Code Online (Sandbox Code Playgroud)

作为一个简单的例子,我想在同一个交易中坚持一个故事和一些故事相关的提示.以下是执行此操作的代码部分:

Story newStory = new Story(title, body, ...);

EntityTransaction transaction = em.getTransaction().begin();
    boolean …
Run Code Online (Sandbox Code Playgroud)

java entity-relationship jpa

13
推荐指数
2
解决办法
4334
查看次数

CSS:浮动时忽略div高度

我正在尝试显示一些照片.所有这些都具有相同的宽度但不同的高度.我正在尝试做类似的事情:正确的形象

每张图片的类名都是pic

<img class = "pic" src = .... />
Run Code Online (Sandbox Code Playgroud)

在样式表中我指定了float:left属性:

.pic{
    float:left
}
Run Code Online (Sandbox Code Playgroud)

最终结果不是预期的结果,而每行在前一行的最高div之后垂直对齐: 错误

有没有办法在纯交叉浏览器CSS中解决我的问题?

html css css-float

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

单击h:commandLink会导致未捕获的ReferenceError:未定义mojarra

我知道这篇文章,我仔细检查了那里的所有可能性.

我在Glassfish 3上使用JSF 2.0和Mojarra实现.

我正在尝试使用两个简单的<h:commandLink>标签来更改应用程序语言.这是.xhtml页面:

<!DOCTYPE html>
<html lang="en"  xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html">
<h:head>
    <title>
        <h:outputText value = "#{appMessage['page.welcome']}" />
    </title>

    <f:metadata>
        <f:event type = "preRenderView" listener = "#{sessionController.changeLanguage}" />
    </f:metadata>
</h:head>

<h:body>
    <h1><h:outputText value = "#{appMessage['text.slide.welcome']}" /></h1>

    <h:form id = "fm-language">
        <h:commandLink action = "#{sessionController.changeLanguage('en')}" value = "#{appMessage['link.english']}" />
        <h:commandLink action = "#{sessionController.changeLanguage('de')}" value = "#{appMessage['link.german']}" />
    </h:form>

</h:body>
Run Code Online (Sandbox Code Playgroud)

这是HTML代码:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>The Maze Project</title>
    </head>
    <body>
        <h1>Welcome</h1>
        <form id="fm-language" …
Run Code Online (Sandbox Code Playgroud)

javascript jsf undefined commandlink mojarra

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

无法使用@IdClass转换实体中的请求元素

我有以下设置:

@Entity
@IdClass(MemberAttributePk.class)
public class MemberAttribute {
    @Id
    @ManyToOne @JoinColumn(name="member_id")
    protected Member member;

    @Id
    protected String name;

    private String value;

    public MemberAttribute() {}

    // get & set
}
Run Code Online (Sandbox Code Playgroud)

和id类:

public class MemberAttributePk implements Serializable {
    protected Member member;
    protected String name;

    public MemberAttributePk() {}

    // get & set
}
Run Code Online (Sandbox Code Playgroud)

我为以下内容定义了一个简单的Spring Data存储库MemberAttribute:

@Repository
public interface MemberAttributeRepo extends JpaRepository<MemberAttribute, MemberAttributePk> {
}
Run Code Online (Sandbox Code Playgroud)

现在,我想要做的就是将成员属性保存到数据库:

public void saveAttribute(Member member, String name, String value) {
    MemberAttribute attr = new MemberAttribute(member, name, value);
    attributeRepo.save(attr); …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate spring-data

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

AWS配置Tomcat的虚拟目录和电子邮件系统

我正在AWS上部署我的第一个应用程序,有几件事我找不到解决方案.

1. 文件系统

该应用程序使用Lucene并允许图像上传,因此我猜我需要一个S3实例来托管Lucene索引和图像.

出于测试目的,在我的本地系统上,我会将这行代码放在Tomcat 7中server.xml:

<Context path="/uploads" docBase="D:/myapp/uploads" />.现在,正如您可能知道的那样,所有以请求开头的请求/uploadsD:/myapp/uploads将由服务器路由到.

此外,Lucene API需要一个绝对路径才能找到索引目录:

FSDirectory.open(new File(ConfigUtil.getProperty("D:/myapp/index")))
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是关于AWS控制台中的此配置.我怎样才能获得那些'D:/ aaa/bbb /'路径?

2. 电子邮件系统

注册后,会向用户发送确认电子邮件.再次,在测试中我使用了Google的smtp.gmail.com.我需要一个主机一个用户名密码,使javax.mail API的工作.

我不知道如何获得这些凭据?是AWS事务还是域名注册商(我正在使用namecheap)问题.

谢谢你的帮助!

amazon-s3 amazon-web-services

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

Servlet 3.0 async 支持的缺点

在我的应用程序中,我有一个自己开发的框架,它将所有请求映射到一个中央 ControllerServlet(没什么特别的,它具有几乎所有框架的基本功能)。我必须实现发布者-订阅者消息交换功能,并且我决定使用 Servlet 3.0 的异步方法。

当前ControllerServletAuthenticationFilter未设置为 asyncSupported。我可以为所有异步处理实现第二个 CotrollerServlet,也可以将现有的 ControllerServlet 声明为asyncSupported=true(即使存在不需要异步处理的请求)。

...对于使用异步功能的应用程序,整个请求处理链必须通过注解或其部署描述符设置此属性... - 源

从这里我明白我必须声明AuthenticationFilterasyncSupported=true(并且在某些情况下不需要异步)。

声明 servlet 和过滤器是否有任何缺点,asyncSupported=true即使它们也映射不需要异步处理的请求?会不会有任何可扩展性问题?

java asynchronous servlet-3.0

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

Lucene 4.0 覆盖最终方法 tokenStream

由于不同的原因,我必须使用最新版本的 Lucene 的 API。

API 还没有很好的文档记录,所以我发现自己无法执行一个简单的 addDocument()

下面是Writer初始化:

analyzer = new StopAnalyzer(Version.LUCENE_40);
config = new IndexWriterConfig(Version.LUCENE_40, analyzer);
writer = new IndexWriter(FSDirectory.open(new File(ConfigUtil.getProperty("lucene.directory"))), config);
Run Code Online (Sandbox Code Playgroud)

简单的toDocument方法:

public static Document getDocument(User user) {
    Document doc = new Document();
    FieldType storedType = new FieldType();
    storedType.setStored(true);
    storedType.setTokenized(false);

    // Store user data
    doc.add(new Field(USER_ID, user.getId().toString(), storedType));
    doc.add(new Field(USER_NAME, user.getFirstName() + user.getLastName(), storedType));

    FieldType unstoredType = new FieldType();
    unstoredType.setStored(false);
    unstoredType.setTokenized(true);

    // Analyze Location
    String tokens = "";
    if (user.getLocation() != null && ! …
Run Code Online (Sandbox Code Playgroud)

java lucene

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

ClassNotFoundException: org.slf4j.Logger

I'm trying to deploy a web app to tomcat using ANT but I ran into this error (the app compiles fine in a simple ant task. The issue occurs when Tomcat is restarted):

Stacktrace:

Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    ... 24 more
Run Code Online (Sandbox Code Playgroud)

I red a couple of answers around here which state that besides slf4j an implementation such as log4j. This is an excerpt of the build.xml file:

<pathelement location="${slf4j-api-1.7.2.jar}"/>
<pathelement location="${log4j.jar}"/>
Run Code Online (Sandbox Code Playgroud)

These are path elements …

java ant logging tomcat slf4j

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

JSF Composite组件迭代并显示对象列表

在JSP和JSTL中,我会正常地做这样的事情:

<c:forEach items="${userList}" var = "user">
    <div id = "user-block">
        <h1>${user.name}</h1>
        <div id = "user-description">
            <p>${user.description}</p>
        </div>
        <ul>
            <li> Age: ${user.age} </li>
            <li> City: ${user.city} </li>
            <li> Country: ${user.country} </li>
        </ul>
    </div>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

我试图使用Facelet复合组件获得相同的结果:

<cc:interface>
    <cc:attribute name="value" type="java.util.List" required="true" shortDescription="The list of objects that should be displayed"/>
</cc:interface>

<cc:implementation>
    <div class = "event-block">

    </div>
</cc:implementation>
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何迭代#{cc.attrs.value}中的对象.

LE: 我想知道是否有办法在不使用JSP或JSTL的情况下解决这个问题

jsf facelets composite-component jsf-2

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