小编kos*_*čák的帖子

struts2:IF中的枚举

如何以下Java条件转化为s:if test="..."Struts2的

if(company.getAffiliateId().asInt() != com.foo.bar.Affiliates.XYZ.asInt()){
 // do something
}
Run Code Online (Sandbox Code Playgroud)

company.getAffiliateId()返回BigDecimal

com.foo.bar.Affiliates是一个enum

这不起作用:

<s:if test="%{company.affiliateId.asInt() != com.foo.bar.Affiliates.XYZ.asInt() }">
   alert("do something");
</s:if>
Run Code Online (Sandbox Code Playgroud)

java struts2 el ognl

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

在GWT活动中使用GIN

我的每个活动都需要一个对应的单例View实现.将它们注入活动的最佳策略是什么?

  1. 构造函数注入 Activity构造函数是从ActivityMapper的getActivity()调用的.ctor已经有一个参数(一个Place对象).我必须创建ActivityMapper,注入所有可能的视图.不好...

  2. 方法注入 - "在执行构造函数后自动执行注释的函数." (GWT in Action,2nd Ed.)好吧,"在执行ctor之后"显然不够快,因为当start()调用Activity的方法时,视图(或以这种方式注入的RPC服务)仍​​未初始化,我得到了一个NPE.

  3. 在Activity的ctor中用GWT.create构造注入器.没用,因为他们不再是单身人士.

gwt gwt-gin dependency-injection gwt-activities

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

OGNL数组和列表索引

我将此参数发送到我的struts动作

cdata [1] = bar

在我的操作中,我对索引和值感兴趣。我CDATAOGNL文档所建议的定义了一个getter / setter对:

public void setCdata(int index, String value){
    LOG.info("setData; key="+ key +"; value="+ value);
    // store index and value;
}

public String getCdata(int index){
    return null; // don't really need a setter
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的异常:

2013-04-29 15:38:49,792 [http-apr-8080-exec-3] WARN  com.opensymphony.xwork2.util.logging.commons.CommonsLogger.warn(CommonsLogger.java:60) - Error setting expression 'cdata[1]' with value '[Ljava.
lang.String;@4223d2a4'
ognl.OgnlException: target is null for setProperty(null, "1", [Ljava.lang.String;@4223d2a4)
        at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2309)
        at ognl.ASTProperty.setValueBody(ASTProperty.java:127)
        at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)
        at ognl.SimpleNode.setValue(SimpleNode.java:301)
        at ognl.ASTChain.setValueBody(ASTChain.java:227)
        at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)
        at ognl.SimpleNode.setValue(SimpleNode.java:301) …
Run Code Online (Sandbox Code Playgroud)

java struts2 ognl

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

加入中的子查询

我需要从数据库中选择具有活动地址的公司(address.address_status_id = 1).如果地址处于非活动状态,则地址列应包含空值.

以下查询完全符合我的要求:

select c.id, c.name, a.id, a.street
from company c
left join 
(select * from address where address_status_id = 1) a 
on c.id = a.company_id
Run Code Online (Sandbox Code Playgroud)

我在Java/QueryDSL中试过这个:

JPAQuery query = new JPAQuery(entityManager);
query = query.from(qCompany);
query = query.leftJoin(company.addresses, new JPASubQuery().from(qAddress)    
.where(qAddress.addressStatusId.eq(AddressStatuss.ACTIVE.asBigDecimal())).list(qAddress));
Run Code Online (Sandbox Code Playgroud)

但是,JPA(以及因此QueryDSL中的JPAQuery)不支持JOIN子句中的子查询

有没有办法重新编写SQL语句,以便它可以用JPA/QueryDSL表示?

编辑:如果它有所作为,我们正在使用Oracle DB和Hibernate JPA提供程序.

java sql jpa querydsl

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

使用月份解析日期而不是前导0

我想解析包含月份(1-12)和年份的日期,例如:

1.2015
12.2015
Run Code Online (Sandbox Code Playgroud)

LocalDate

我使用此代码获得异常:

final DateTimeFormatter monthYearFormatter = DateTimeFormatter.ofPattern("M.yyyy");
LocalDate monthYearDate = LocalDate.parse(topPerformanceDate, monthYearFormatter);
Run Code Online (Sandbox Code Playgroud)

java.time.format.DateTimeParseException:无法解析文本'6.2015':无法从TemporalAccessor获取LocalDate:{MonthOfYear = 6,Year = 2015},ISO类型为java.time.format.Parsed的ISO

文档北京时间不太清楚,我在短短的一个月的格式.

编辑:我想问题是每月缺少的一天?

java datetime java-8

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

QueryDSL:从PathBuilder生成谓词

如何用PathBuilder替换下面使用生成的Q*类和java反射的方法?

// member vars:
T operand;  // can be a BigDecimal or a String
String tableName;
String fieldName;
String methodName;

public Predicate asPredicate()
{
   Class<?> tableClazz = Class.forName("foo.bar.database.model.Q"+ WordUtils.capitalize(tableName));
   Object tableObj = tableClazz.getConstructor(String.class).newInstance(tableName +"1000");
   Field colField = tableClazz.getDeclaredField(fieldName);
   Object colObj = colField.get(tableObj);

   Class classParam = Object.class;
   if(methodName.matches(".*like"){
     classParam = String.class;
   }
   // method name is one of eq, ne, like...
   Method m = colObj.getClass().getMethod(methodName, classParam );
   return (Predicate) m.invoke(colObj, operand);
}
Run Code Online (Sandbox Code Playgroud)

这很好,但我建议使用PathBuilder来回答我的另一个问题/sf/ask/1068889181/)这也将删除尴尬的newInstance(tableName +"1000").

PathBuilder<?> entityPath = new PathBuilder("foo.bar.database.model.Q"+ …
Run Code Online (Sandbox Code Playgroud)

querydsl

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

Oracle:在having子句中命名子查询

如何从having子句中的subselect 引用网络列?

select distinct c.id, c.name,
(
select count(cm.id) cnt
from
company_mapping cm
where
cm.company_id_source = c.id
or
cm.company_id_target = c.id
) network
from company c
where
c.name like 'foobar%'
group by c.id, c.name
having network > 1
Run Code Online (Sandbox Code Playgroud)

ORA-00904:"NETWORK":标识符无效.如果我遗漏了最后一行,它按预期工作,但我只对网络> 1的行感兴趣.

sql oracle subquery

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