标签: facelets

Jsf如何创建命名容器

我的JSF应用程序中存在重复ID的问题.我在这篇文章中读过,其中一个可能的解决方案是使用命名容器.你能给我一些例子来说明如何使用命名容器来避免重复的id问题吗?我使用Facelets.

jsf facelets naming-containers

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

获取<ui:insert>的name属性

我有一个带有标题和副标题的JSF模板:

<h3><ui:insert name="title"/></h3>
<hr/>
<h5><ui:insert name="subtitle"/></h5>
Run Code Online (Sandbox Code Playgroud)

使用此模板的所有页面都有标题,但并不总是一个副标题:

<ui:define name="title">My Title with no subtitle</ui:define>
Run Code Online (Sandbox Code Playgroud)

当没有副标题时,我不想要<hr/>标签.所以我真正想做的是检查是否subtitle为空,如果是,则忽略代码块.像这样的东西:

<h3><ui:insert name="title"/></h3>
<c:if test="#{not empty subtitle}">
    <hr/>
    <h5><ui:insert name="subtitle"/></h5>
<c:if>
Run Code Online (Sandbox Code Playgroud)

但当然<c:if test="#{not empty subtitle}">不行.我不知道如何访问subtitle变量的值.

任何的想法 ?

谢谢

jsf facelets

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

从facelets 1.1迁移到faclets 2.0 - FaceletViewHandler

我已阅读以下帖子,这非常有帮助 从JSF 1.2迁移到JSF 2.0

但是我遇到了迁移的问题,因为我有一个从FaceletViewHandler扩展的自定义视图处理程序 - 这不是faclets 2的一部分.

我正在迁移JBoss 4.2.2以下内容: - JSF 1.2到JSF 2.0

我也想迁移这些小子 - 我有上述问题.

在我的应用程序中,我也在使用Tomahawk - 这次迁移有什么问题吗?

提前致谢.

ELICO.

facelets jsf-2

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

javax.el.E​​LException:无法解析表达式[{pz:instanceof(object,'com.project.domain.MyClass')}]

Currenty我有一个带有JSF 1.2的Web项目和在tomcat 6.0.18.0中运行的Facelets.我决定升级servlet容器,因此我部署在tomcat 7中,所有看起来都没问题,直到我们使用我的个性化facelet函数命中一个视图.

javax.el.ELException: Failed to parse the expression [{pz:instanceof(object,'com.project.domain.MyClass')}]

Caused by: org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, column 5. Was expecting one of:
"}" ...
"." ...
"[" ...
Run Code Online (Sandbox Code Playgroud)

解析以下代码时会发生此错误:

<ui:repeat var="object" value="#{objects}">
<ui:fragment rendered="#{pz:instanceof(object,'com.project.domain.MyClass')}">
...
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,它会因为表达式中的冒号而引发错误.我已将它跟踪到tomcat/lib目录中的jasper-el,如果我用tomcat 6.0.18替换jasper.jar和jasper-el.jar,那么每个标记都可以正常工作.

有没有其他人在升级他们的tomcat之前遇到过这个问题?他们是如何解决的?我可以使用tomcat 6中的这些jasper jar在生产tomcat 7中部署,否则会导致进一步的问题.

jsf facelets el tomcat7

7
推荐指数
3
解决办法
2万
查看次数

JSF f:viewParam如果位于template.xhtml中则不调用setter

也许有人可以启发我.

如果放

<f:metadata>
  <f:viewParam name="test" value="#{test.value}"/>
</f:metadata>
Run Code Online (Sandbox Code Playgroud)

在模板内,设置者

setValue
永远不会被调用,即调用preRender方法'call()'而不事先调用setter(参见下面的代码示例以供参考).

但是,如果将元数据块放在合成中,则会按预期调用它.

这是正常行为还是我做错了什么?
非常感谢任何见解.
Hanspeter

供参考,这里是非工作版本的完整代码示例:

testtemplate.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:ui="http://java.sun.com/jsf/facelets">

     <f:metadata>
        <f:viewParam name="test" value="#{test.value}"/>
     </f:metadata>

     <f:event type="preRenderView" listener="#{test.call}" />

     <h:head>
        <title>Test Template</title>
     </h:head>

     <h:body>
        <ui:insert name="text" />
     </h:body>

</html>
Run Code Online (Sandbox Code Playgroud)

testcomposition.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                 template="/templates/testtemplate.xhtml" 
                 xmlns:f="http://java.sun.com/jsf/core"
                 xmlns:h="http://java.sun.com/jsf/html">

     <ui:define name="text">
        some text
     </ui:define>

</ui:composition>
Run Code Online (Sandbox Code Playgroud)

这里是工作 …

jsf facelets composition viewparams

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

究竟做什么h:c:f:和ui:表示在JSF标签库中?

在JSF和Facelets标签中,这些前缀究竟是什么?

  • H:
  • C:
  • F:
  • 用户界面:

例如:h:head c:catch f:event ui:decorate

java jsf servlets facelets java-ee

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

Facelets页面是作为JSP生成的Servlet生成的Servlet

由于所有JSP在执行之前都会生成/转换为Servlet,对于Facelets来说也是如此吗?

我正在使用JSF 2.0和Facelets,并希望看到它生成的Java代码可能是Servlet.

jsf compilation facelets

7
推荐指数
2
解决办法
1150
查看次数

从外部文件系统或数据库获取Facelets模板/文件

我能够成功地使用我的应用程序中的模板:

<ui:decorate template="/WEB-INF/templates/mytemplate.xhtml">
Run Code Online (Sandbox Code Playgroud)

我还可以移动模板/META-INF/templates/mytemplate.xhtml一的JAR和得到这个工作:

<ui:decorate template="/templates/mytemplate.xhtml">
Run Code Online (Sandbox Code Playgroud)

我实际上想把这个文件放到文件系统(或数据库)上.我怎样才能做到这一点?我发现很多相关的东西com.sun.facelets.impl.DefaultResourceResolver,但我认为这实际上与覆盖模板的服务有关.它不是尝试解析URL,它只是试图以某种方式在类路径上获取文件.

resources jsf external facelets jsf-2

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

JSF Facelets如何包含外部html?

我有一个正在开发的应用程序,我的公司有一个标题横幅,需要在所有页面上.我们在该标题横幅的团队中有大约6个不同的版本,我现在想要制作它以便我只是将源代码中的横幅包含到我的应用中,这样如果他们更新横幅的来源,我的应用版本的横幅也会自动更新.

使用<ui:include src="http://mycompany.com/banner.html" />导致错误The markup in the document following the root element must be well-formed..

即使它没有很好的形成xml,我怎么能包含这个横幅?

我目前的模板:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui"
    xmlns:ui="http://java.sun.com/jsf/facelets">

<ui:composition>

<h:body>
    <div>
      <ui:include src="http://mycompany.com/banner.html" />
    </div>

    <ui:insert name="content" />
</h:body>
</ui:composition>
</html>
Run Code Online (Sandbox Code Playgroud)

jsf facelets jsf-2

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

如何将旧JSP的片段重构为某些JSF等价物?

ORIGINAL JSP(WorkItem.jsp)

<c:forEach var="actionItem" items="${workItem.work_action_list}">
    <c:if test="${actionItem.workActionClass.work_action_type_id == '1'}" >
       <%@ include file="inc_done_button.jsp" %>
    </c:if>
    <c:if test="${actionItem.workActionClass.work_action_type_id == '2'}" >
         <c:set var="actionItem" value="${actionItem}" scope="request" />
         <c:set var="checklist" value="${actionItem.meat}" scope="request" />
        <jsp:include page="inc_dynamic_checklist_v.jsp" flush="true" />
    </c:if>
    etc...
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

原始Java

for (ListIterator<WorkflowInstanceWorkItemAction> actionIter = wfiwi.getWork_action_list().listIterator(); actionIter.hasNext();) {
    if ("2".equals(work_action_type_id)) {
        ChecklistInstanceForm ciForm = new ChecklistInstanceForm(this, authenticatedUser);
         ChecklistInstance ci = null; 
        ci = (ChecklistInstance) ciForm.getChkLstInstanceByWfiWiaOwner(wfiWorkItemAction, authenticatedUser);
    // Get the meat details for this action and inject it into the object
        wfiWorkItemAction.setMeat(ci);
    } …
Run Code Online (Sandbox Code Playgroud)

jsf jsp facelets composite-component

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