小编Jor*_*dan的帖子

JSF ui的问题:组合和复合组件

我试图找出这是一个JSF/EL问题还是错在这里.

基本上,我想将一个项目对象作为ui:param传递给一个ui:组合并在里面有一个按钮(即bootstrap按钮,因此它们实际上是html链接因此使用commandLink)并让它使用该项目执行一个动作PARAM.这是ui:composition item.xhtml传递了一些参数.

<ui:include src="comp/item.xhtml">
    <ui:param name="item" value="#{itemVM.item}"/>
    <ui:param name="desc" value="#{true}"/>
</ui:include>
Run Code Online (Sandbox Code Playgroud)

现在我希望这个按钮是一个复合组件"bt:button",但是它似乎在解决"item"参数时遇到了问题.为了确认这一点,我将命令链接从组件中取出并放在页面上,确定它有效.此外,如果我在ui:composition之外移动bt:按钮,它也可以在那里工作.最后,如果我使用单引号(如'test')将item更改为字符串,那么它也可以正常工作(出于测试目的,我的action方法需要一个Object).基于这三种情况,看起来复合组件在解析传递给合成的项参数时遇到问题.

这是item.xhtml中第一个测试(即复合组件与常规JSF命令链接相对)的示例:

<!- This composite component doesn't Work -->
<bt:button id="cmpBtn" active="#{user.compares[item.id]}"
           disabled="#{user.compares[item.id] != null and itemsCtr.numOfCompares >= 100}"
           styleClass="btn-item-compare btn-small"
           style="margin-bottom:5px"
           action="#{itemsCtr.compare(item)}">
    <i class="#{user.compares[item.id] != null ? 'icon-minus' : 'icon-plus'}"/>
    <h:outputText value="#{user.compares[item.id] != null ? 'Comparing' : 'Compare'}"/>
    <f:ajax render="@this"/>
</bt:button>

<!-- This regular jsf component works -->
<h:commandLink action="#{itemsCtr.compare(item)}" value="Test">
    <f:ajax render="@this"/>
</h:commandLink>
Run Code Online (Sandbox Code Playgroud)

这是我的bt:button的复合组件定义:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:cc="http://java.sun.com/jsf/composite"
      xmlns:f="http://java.sun.com/jsf/core">

<cc:interface componentType="LinkComponent">
    <cc:attribute name="action" targets="button"/>
    <cc:attribute name="value" …
Run Code Online (Sandbox Code Playgroud)

jsf composite-component jsf-2

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

使用GruntJS的AngularJS开发模式

我有几个产品从yeoman角度发生器开始,它是一个非常好的开发设置.我无法找到一个好的解决方案是设置开发/生产模式标志.

当然,我们使用一些我们在生产中只需要的工具,因此使用prod/dev变量可以使用内联JavaScript和/或HTML文件非常有用.我以前在网上搜索过解决方案但没有找到任何有用的东西.

最终,我正在寻找一个在AngularJS设置中使用的好解决方案,理想情况下通过grunt服务和/或构建运行来设置.其他球队在这做什么?

javascript angularjs gruntjs yeoman

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