这有点像这个问题https://issues.jboss.org/browse/RF-11469我有一个包含组合的模板,定义如下:
<h:form id="transfer_list">
<ccs:criteriaPanel header="Critère de recherche"
filterAction="#{controller.filter()}">
<form:criteriaForm bean="#{controller.transferCriteria}"
rendered="#{! empty controller.transferSearchForm}"
mode="UPDATE"
controller="#{controller}" />
</ccs:criteriaPanel>
</h:form>
控制器是通过模板子级中的ui:param
定义的。
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
template="/pages/transfer/transferList.xhtml">
<ui:param name="controller" value="#{transferListOpenController}" />
</ui:composition>
以下是复合impl(标准面板):
<cc:interface>
<cc:attribute name="header" default="#{i18n['HEADER_SEARCH_CRITERIA']}" />
<cc:attribute name="filterAction" method-signature="java.lang.Object filter()" />
<cc:attribute name="update" default="@(.ui-datatable)" />
</cc:interface>
<cc:implementation>
<div id="#{cc.clientId}">
<p:panel header="#{cc.attrs.header}" toggleable="true">
<cc:insertChildren />
<f:facet name="footer">
<p:commandButton id="search_btn"
value="#{i18n['BUTTON_FILTER']}"
action="#{cc.attrs.filterAction}"
icon="ui-icon-search"
update="#{cc.attrs.update}" />
<p:commandButton value="#{i18n['BUTTON_CLEAR_FILTER']}"
action="#{cc.attrs.filterAction}"
process="@this"
immediate="true"
update="#{cc.attrs.update}">
<p:ajax update="@form" resetValues="true" />
</p:commandButton>
</f:facet>
<p:defaultCommand target="search_btn" />
</p:panel>
</div>
</cc:implementation>
点击按钮“filterAction”结果如下:
javax.faces.FacesException:#{cc.attrs.filterAction}:javax.el.属性NotFoundException:目标不可达,标识符[控制器]在com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)org.primefaces.application.DialogActionListener.processAction(DialogActionListener.java:45)javax.faces.component.UICommand.broadcast(UICommand.java:315)解析为空
我使用Tomcat 8.5和Mojarra 2.2.13。如果我不把整个东西放在一个复合组件中,它就可以工作(标准面板)
使现代化
此处提供的样本:https://github.com/Rapster/primefaces-test/tree/issue-sof-45834296
与MyFaces 2.2.11和Mojarra 2.2.8-23和2.3.2配合良好(我不知道升级到2.3会有多大影响...)从我在这里读到的https://stackoverflow.com/a/42656386/4605161,Mojarra 2.2.8是针对WebLogic的,但似乎我需要这个(我在Tomcat上运行)
变通方法
写这篇文章让它发挥作用(但这是一个变通方法,我宁愿使用模板):
<ui:composition xmlns="http://www.w3.org/1999/xhtml">
<ui:param name="controller" value="#{testView}" />
<ui:decorate template="/template.xhtml">
</ui:decorate>
</ui:composition>
有趣的是,如果我在ui:decoration中放入ui:param
,我最终也会遇到同样的异常
应在2.2.15中修复,请参阅github。com/javaserverfaces/mojarra/issues/4271
如何在一个语句中包含多个案例?我习惯于Vue或Angular 1带有、和,但Angular 4似乎只有()和()条件。 根据文件,我只能做: 但我想有多种条件(比如): 但我最终不得不使用,这感觉像是黑客攻击: 或者,我在Angular 1和Vue中使用的很多语法在Angular 4中似乎都不受支持,那么,用这样的条件构造代码的推荐方法是什么呢?
4 钩子方法的使用 模板方法模式中,在父类中提供了一个定义算法框架的模板方法,还提供了一系列抽象方法、具体方法和钩子方法,其中钩子方法的引入使得子类可以控制父类的行为。最简单的钩子方法就是空方法,代码如下: public virtual void Display() { } 当然也可以在钩子方法中定义一个默认的实现,如果子类不覆盖钩子方法,则执行父类的默认实现代码。
3 模板方法模式应用实例 下面通过一个应用实例来进一步学习和理解模板方法模式。 1. 实例说明 某软件公司欲为某银行的业务支撑系统开发一个利息计算模块,利息计算流程如下: (1) 系统根据账号和密码验证用户信息,如果用户信息错误,系统显示出错提示; (2) 如果用户信息正确,则根据用户类型的不同使用不同的利息计算公式计算利息(如活期账户和定期账户具有不同的利息计算公式); (3)
1. 模板方法模式概述 在现实生活中,很多事情都包含几个实现步骤,例如请客吃饭,无论吃什么,一般都包含点单、吃东西、买单等几个步骤,通常情况下这几个步骤的次序是:点单 --> 吃东西 --> 买单。在这三个步骤中,点单和买单大同小异,最大的区别在于第二步——吃什么?吃面条和吃满汉全席可大不相同,如图1所示: 图1 请客吃饭示意图 在软件开发中,有时也会遇到类似的情况,某个方法的实
我试图理解方法引用在java中是如何工作的。乍一看,这很简单。但当涉及到这些事情时: Foo类中有一个方法: 在另一个类Bar中有这样一个方法: 并使用方法参考: 它符合并工作,但我不明白它如何匹配这个: 到BiFunction方法: ???
我需要在angularjs模板中使用else if。语法是什么?例如,在c语言中,我将编写如下代码: 我的代码: