小编jus*_*fan的帖子

如何在匿名类上调用JSF操作?EL无法访问它

我希望在我的JSF(MyFaces 1.2)应用程序中有一个通用菜单.

<h:form>
  <h:dataTable id="dt1" value="#{portal.actionList}" var="item">
    <f:facet name="header">
        <h:outputText value="Menu" />
    </f:facet>
    <h:column>
        <h:commandLink action="#{item.action}">
            <h:outputText value="clickme"/>
        </h:commandLink>
     </h:column>
   </h:dataTable>
 </h:form>
Run Code Online (Sandbox Code Playgroud)

然后我的会话范围门户网站将如下所示:

 class Portal {
    private ArrayList<IAction> list = new ArrayList<IAction>();

    public Portal() {
       list.add(new IAction() {
                public action() {
                    log.info("called action here");
                }
        });
    }
    public ArrayList<IAction> getActionList() {
        return list;
    }
 }
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,它将显示正常.但是当您尝试通过单击"clickme"命令链接执行操作时,将发生以下异常:

  Class org.apache.el.parser.AstValue can not access a member of class Portal$1 with modifiers "public"
Run Code Online (Sandbox Code Playgroud)

有没有办法显示一个匿名类列表,从中ITemplate.action()可以执行一个方法(在这个例子中)?

编辑:

当我使用(内部)类时,它可以工作.例如:

    class Bla implements IAction {
         public …
Run Code Online (Sandbox Code Playgroud)

java jsf el

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

如何修复Ember 1.13.9中弃用的Ember.Handlebars.registerBoundHelper?

我目前正在从Ember 1.8.1升级到Ember 1.13.9.我的应用程序是一种oldschool,不使用ember-cli(没有es6任何语法).

如何正确替换已弃用的Ember.Handlebars.registerBoundHelper:

Ember.Handlebars.registerBoundHelper('date-ago',function(date) {
  return moment.utc(date).fromNow();
});
Run Code Online (Sandbox Code Playgroud)

会建议你

DEPRECATION: `Ember.Handlebars.registerBoundHelper` is deprecated. 
Please refactor to use `Ember.Helpers.helper`. 
[deprecation id: ember-htmlbars.register-bound-helper]
Run Code Online (Sandbox Code Playgroud)

所以我想用'Ember.Helper.helper'替换'Ember.Handlebars.registerBoundHelper'会这样做,但是这些帮助器不再可用了:"未捕获的错误:断言失败:一个名为'date-ago'的助手不能找到了!".

如何在没有ES6语法或ember-cli魔法的情况下在Ember 2.0中注册htmlbars助手?

ember.js deprecation-warning htmlbars

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

如何阻止内部动作冒泡到外部链接到帮助器?

点击"编辑"触发动作"编辑":

  {{#link-to "pages.show" page class="list-group-item"}}
    {{page.name}}
    <span class="badge" {{action "edit" page preventDefault=false}}>edit</span>
  {{/link-to}}
Run Code Online (Sandbox Code Playgroud)

然后触发动作(例如打开编辑页面),但是在下一秒,链接到重定向完成,所以我最终在"pages.show"路线上.

预期:仅调用"编辑"操作,并且单击事件(?)不会"冒泡"到链接到帮助程序.

使用侧注 Ember 2.2,上面的模板是组件的一部分.

PS:我认为在一个动作中使用preventDefault = false会停止这种行为 - 但很明显,链接帮助器从其他地方获取信息.

ember.js ember-cli htmlbars

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

标签 统计

ember.js ×2

htmlbars ×2

deprecation-warning ×1

el ×1

ember-cli ×1

java ×1

jsf ×1