标签: facelets

为JSF 2复合组件生成文档

我正在寻找为自定义JSF 2复合组件库生成文档.复合组件未在任何faces-config.xml文件中引用,而是复合组件的.xhtml文件存储在META-INF/resources中,并使用新的composite:interface标签来定义接口.

对于JSP标记库,可以使用https://taglibrarydoc.dev.java.net/生成文档,我想知道我的JSF 2复合组件库是否有类似的东西.

documentation jsf facelets documentation-generation composite-component

14
推荐指数
1
解决办法
1110
查看次数

在JSF中,输出List <SomeObj>的最短方式是SomeObj的"name"属性的逗号分隔列表

我有一个关于在JSF中输出对象列表作为逗号分隔列表的问题.

让我们说:

public class SomeObj {
  private String name;
  ... constructors, getters and setters ...
}
Run Code Online (Sandbox Code Playgroud)

和列表<SomeObj>:

List<SomeObj> lst = new ArrayList<SomeObj>();
lst.add(new SomeObj("NameA"));
lst.add(new SomeObj("NameB"));
lst.add(new SomeObj("NameC"));
Run Code Online (Sandbox Code Playgroud)

将其作为列表框输出我可以使用此代码:

<h:selectManyListbox id="id1"
                  value="#{listHolder.selectedList}">
  <s:selectItems value="#{listHolder.lst}"
                   var="someObj"
                 label="#{someObj.name}"/>
  <s:convertEntity />
</h:selectManyListbox>
Run Code Online (Sandbox Code Playgroud)

但输出列表的最简单方法是什么,逗号分隔?像这样:

NameA, NameB, NameC
Run Code Online (Sandbox Code Playgroud)

我应该使用JSTL <c:forEach />还是可以使用<s:selectItems />标签?

jsf facelets

14
推荐指数
3
解决办法
6094
查看次数

警告:此页面调用使用前缀[tagname]声明的XML名称空间,但该名称空间不存在taglibrary

我已经将Facelet视图模板声明如下:

<ui:composition template="./templates/master.xhtml"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:p="http://primefaces.prime.com.tr/ui">

  <ui:define name="content">
    <h:panelGroup rendered="#{!current.hasLoggedIn()}">      
      <h:panelGroup layout="block" styleClass="warningBox">
        <h:outputText value="#{app.youHaveNotLoggedIn}"/>
        <br/>
        <h:link value="#{lbls.login}" outcome="login"/>
      </h:panelGroup>      
    </h:panelGroup>

    <h:panelGroup rendered="#{current.hasLoggedIn()}">
      <p:panel>
        <f:facet name="header">
          <h:outputText value="#{lbls.requestWaggon}" />
        </f:facet>

        <h:form id="frmRequest">
          <h:panelGrid columns="3" footerClass="buttons">
            <h:outputText value="#{lbls.number}:"/>
            <h:inputText id="number" label="#{lbls.number}" styleClass="ltr" value="#{requestWaggon.request.number}" readonly="true" />
            <h:message for="number" infoClass="info" warnClass="warning" errorClass="error" fatalClass="fatal"/>

            <h:outputText value="#{lbls.requestDate}:"/>
            <h:panelGroup>
              <h:inputText styleClass="date ltr" id="date" label="#{lbls.requestDate}" value="#{requestWaggon.request.date}" required="true">
                <f:converter converterId="ir.khorasancustoms.DateConverter"/>
              </h:inputText>
              <input type="button" value="..." onclick="displayDatePicker('frmRequest:date', this);" class="datePicker"/>
            </h:panelGroup>
            <h:message for="date" infoClass="info" warnClass="warning" errorClass="error" fatalClass="fatal"/>

            <h:outputText value="#{lbls.nameOfMaterialOwner}:"/>
            <h:inputText …
Run Code Online (Sandbox Code Playgroud)

jsf facelets jsf-2

14
推荐指数
1
解决办法
3万
查看次数

如何使用JSF 2.0 Composite Component实现动态列表?

我问了这个问题,虽然答案直接满足了我的需求,但我仍然觉得必须有一个更简单的解决方案来解决这个问题.

我想有一个复合组件接受一个项目列表(商定的项目类型,以便成员可以在复合组件中自由使用)

CC(复合组件)显示项目列表并允许项目的加法和减法.

我想以最简单有效的方式做到这一点.

为了说明问题,一个例子:

在此输入图像描述

定义应该相当简单(当然,除非:-)):

<special:dynamicFieldList value="#{bean.fieldList} />
Run Code Online (Sandbox Code Playgroud)

Field对象最抽象的形式是:

public class Field{
 String uuid;
 String value;
}
Run Code Online (Sandbox Code Playgroud)

我猜就是这样.你会如何以简单的方式实现这一点?

谢谢!

jsf facelets dynamic-forms composite-component jsf-2

14
推荐指数
1
解决办法
1万
查看次数

将JSF前缀更改为后缀映射会强制我重新应用CSS背景图像上的映射

我多年来一直在使用前缀映射,并决定切换到后缀映射,只是为了/faces真正摆脱url.在我挖洞之前,我只是想检查一下我是否朝着正确的方向前进,因为有一些意想不到的事情正在发生.我改变了这个:

<servlet-mapping>
    <servlet-name>FacesServlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

对此:

<servlet-mapping>
    <servlet-name>FacesServlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

然后我看到所有内容FacesServlet.xhtml 附加到它上面,因此浏览器正在请求background.png.xhtml文件, style.css.xhtml文件 - 这是正确的吗?我认为它被称为后缀映射,但它看起来有些凌乱,我试图说服自己这是要走的路.

在我引用URI的CSS文件中,我还必须附加.xhtml:

background-image: url(images/background.png.xhtml);
Run Code Online (Sandbox Code Playgroud)

然后我看到BalusC的一篇帖子提供了一个解决方案,可以防止资源下载而无需通过FacesServlet:

<security-constraint>
    <display-name>Restrict raw XHTML docs</display-name>
    <web-resource-collection>
        <web-resource-name>XHTML</web-resource-name>
        <url-pattern>*.xhtml</url-pattern>
    </web-resource-collection>
    <auth-constraint/>
</security-constraint>
Run Code Online (Sandbox Code Playgroud)

当我添加这个时,只有真实.xhtml文件加载到页面上,所有其他资源(尽管已经.xhtml附加)不显示.

我想知道的是:

  1. 这是否适用.xhtml于一切正常(对不起,如果这几年最愚蠢的问题)

  2. 为什么'限制原始xhtml文档'安全约束会阻止加载CSS,JavaScript和图像等资源?

感谢您的任何反馈.我在Glassfish 3.1上使用Mojarra 2.1.2.

css jsf facelets jsf-2

14
推荐指数
1
解决办法
7234
查看次数

如何在使用ui:composition时更改页面的头元素

我想问一个问题,我有一个像这样的主模板

<?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:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html">

    <h:head>
        <title>Login</title>
    </h:head>

    <h:body>
        <div id="top">
            <ui:insert name="top">
                <ui:include src="header.xhtml" id="header"/>
            </ui:insert>
        </div>
        <div>
            <div id="content">
                <ui:insert name="content"></ui:insert>
            </div>
        </div>
        <div id="bottom" style="position: absolute;top: 675px;width: 100%" align="center">
            <ui:insert name="bottom">
                <ui:include src="footer.xhtml" id="footer"/>
            </ui:insert>
        </div>
    </h:body>
</html>
Run Code Online (Sandbox Code Playgroud)

在我的每一页上我都使用这样的东西

<?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:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.prime.com.tr/ui"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html">

    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <title>City Setup</title>
    </h:head>

    <h:body>
        <ui:composition …
Run Code Online (Sandbox Code Playgroud)

facelets templating jsf-2

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

如何在多次战争之间共享一个jsf错误页面

我正试图在多次战争之间共享一个错误页面(error.xhtml).它们都是一个大耳朵应用程序,并且都使用一个常见的jar库,我想把它放在这里.

错误页面应使用web.xml或更好的web-fragment.xml,并将声明为标准java ee错误页面.

实际EAR结构:

EAR
 EJB1
 EJB2
 WAR1 (using CommonWeb.jar)
 WAR2 (using CommonWeb.jar)
 WAR3 (using CommonWeb.jar)
Run Code Online (Sandbox Code Playgroud)

只是将错误页面放在META-INF/resources下面将不起作用,因为它不是资源.

我想尽可能少地配置每个war文件.

我正在使用Glassfish 3.1,但我希望尽可能使用Java EE 6标准.

java jsf facelets java-ee jsf-2

13
推荐指数
1
解决办法
5090
查看次数

JSF/Facelets:为什么将JSF/Facelets与HTML标签混合起来不是一个好主意?

我现在已经读了好几遍:一些开发人员并不主张在他们的XHTML文件中使用HTML标签交换JSF/Facelets标签.显然,HTML标签不会成为UI组件树的一部分,但它的缺点是什么?

我经常找到作者做这种混合的代码示例:

http://www.ibm.com/developerworks/java/library/j-facelets/

http://www.packtpub.com/article/facelets-components-in-jsf-1.2

http://oreilly.com/catalog/9780596529246

"Seam in Action"还交错了JSF/Facelets和HTML标签.

我对实际使用的内容感到困惑.我开始混合标签,但我开始相信它可能不是正确的选择.但是,我不明白为什么纯粹的方法是可取的.

我肯定知道我有一个表,其中JSF数据表没有给我足够的灵活性来显示我需要的东西,所以这样做是不可能的.

此外,我想知道为什么上面的例子都没有使用f:view等而不是硬编码的html,head,body等标签.

有人可以帮我清楚一下吗?

xhtml jsf facelets

13
推荐指数
1
解决办法
4142
查看次数

找不到http://java.sun.com/jsf/facelets的标记库描述符

我有一个JSP

<%@taglib uri="http://java.sun.com/jsf/facelets" prefix="ui" %>
Run Code Online (Sandbox Code Playgroud)

但它有错误

绝对的uri:http://java.sun.com/jsf/facelets无法在web.xml或使用此应用程序部署的jar文件中解析

我有图书馆facelets-lib.jarjsf-facelets-1.1.10.jar,我想是的Facelets,但它们不包含JSP标签库描述符.

什么文件是正确的?

jsf jsp facelets taglib

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

将Argument传递给复合组件操作属性

标题真的说明了一切.我已经尝试了失败的错误:

Illegal attempt to pass arguments to a composite component lookup expression (i.e. cc.attrs.[identifier]).

我的尝试看起来像这样:

<composite:interface>
  <composite:attribute name="removeFieldAction" method-signature="void action(java.lang.String)" />
</composite:interface>
<composite:implementation>
  <h:commandButton value="Remove" action="#{cc.attrs.removeFieldAction('SomeString')}"/>
</composite:implementation>
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

facelets composite-component jsf-2

13
推荐指数
1
解决办法
3万
查看次数