PrimeFaces Extensions 3.0.0の新しいコンポーネント - Challenge Java EE !
を見て 3.0.0 が出てるのを知りました。
で試してみましたが AnalogClock と Knob は テーマを指定しないとエラーが出て正しく動きません。
説明は AnalogClock で行いますが、Knob でも同様です。
core/AnalogClock.java at master · primefaces-extensions/core · GitHub
private String getDefaultColorTheme() { ELContext elContext = getFacesContext().getELContext(); ValueExpression defaultThemeVE = getFacesContext().getApplication().getExpressionFactory().createValueExpression(elContext, RequestContext.getCurrentInstance().getApplicationContext().getConfig().getTheme(), String.class); String defaultTheme = (String) defaultThemeVE.getValue(elContext); return defaultTheme; }
ここの ValueExpression 取ってるとこがテーマを指定しないと、こんな感じになり
ValueExpression defaultThemeVE = getFacesContext().getApplication().getExpressionFactory() .createValueExpression(elContext, null, String.class);
最終的に javax.el.ELException: Expression cannot be null が出ます。
これを回避するにはテーマを指定すると回避出来ます。
PrimeFaces
web.xml の context-param でテーマを指定すると大丈夫です。
<context-param> <param-name>primefaces.THEME</param-name> <param-value>aristo</param-value> </context-param>
で、テーマを指定しなくても回避したいなーという場合は、
private String getDefaultColorTheme() { ELContext elContext = getFacesContext().getELContext(); ValueExpression defaultThemeVE = getFacesContext() .getApplication().getExpressionFactory().createValueExpression( elContext, RequestContext.getCurrentInstance() .getApplicationContext().getConfig().getTheme(), String.class ); String defaultTheme = (String) defaultThemeVE.getValue(elContext); return defaultTheme; }
を
private String getDefaultColorTheme() { ELContext elContext = getFacesContext().getELContext(); ValueExpression defaultThemeVE = getFacesContext() .getApplication().getExpressionFactory().createValueExpression( elContext, Optional.ofNullable(RequestContext.getCurrentInstance() .getApplicationContext().getConfig().getTheme() ).orElse("aristo"), String.class ); String defaultTheme = (String) defaultThemeVE.getValue(elContext); return defaultTheme; }
こんな感じに書き換えるとテーマを指定しなくても動くはずです。
デフォルトのテーマ名の取り方を調べてないのでベタで書いてますが、そこさえ調べればパッチ投げれそうな感じですね。