相关疑难解决方法(0)

如何制作JSF复合组件的网格?

我在panelGrids中有很多outputLabel和inputText对

<h:panelGrid columns="2">
  <h:outputLabel value="label1" for="inputId1"/>
  <h:inputText id="inputId1/>

  <h:outputLabel value="label2" for="inputId2"/>
  <h:inputText id="inputId2/>

  ...
</h:panelGrid>
Run Code Online (Sandbox Code Playgroud)

我希望所有这些都有一些行为:比如每个inputText的相同验证或相同大小.所以我创建了一个复合组件,它只包含一个outputLabel和一个inputText

<my:editField value="field1"/>
<my:editField value="field2"/>
Run Code Online (Sandbox Code Playgroud)

但是现在当我将它们放在gridPanel中时,根据标签文本的长度,它们不会对齐.我理解为什么,但我不知道如何解决.

grid jsf alignment composite-component jsf-2

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

什么是JSF中的组件绑定?何时优先使用?

binding在以下问题中阅读了有关属性的组件绑定:

据我所知,它将视图中JSF标记后面的UI组件绑定到UIComponent辅助bean中的属性.但是,我很困惑组件绑定的用途以及何时应该使用它.有人可以用更简单的方式解释它并给出一些实际的例子吗?

jsf binding components

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

JSF条件包含,因为在视图中已找到组件ID

我知道我们不能重复在同一个视图树中我们拥有的任何组件的ID.

我有一个页面,其中包含某些条件的其他页面像这样......

<h:panelGroup rendered="#{bean.insertMode == 'SINGLE'}">
   <ui:include src="_single.xhtml" />
</h:panelGroup> 
<h:panelGroup rendered="#{bean.insertMode == 'DOUBLE'}">
   <ui:include src="_double.xhtml" />
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

现在在这些页面中,我有"几乎"相同的组件层次结构(复杂)具有不同的操作行为(不仅方法调用,还有视图),例如:

_single.xhtml

<p:inputText id="fieldID" value="#{bean.value}" />
<p:commandLink actionListener="#{bean.singleAction()}" />
Run Code Online (Sandbox Code Playgroud)

_double.xhtml

<p:inputText id="fieldID" value="#{bean.value}" />
<p:commandLink actionListener="#{bean.doubleAction()}" />
Run Code Online (Sandbox Code Playgroud)

我的小例子工作正常,并按照预期渲染,但我得到了

java.lang.IllegalStateException: Component ID fieldID has already been found in the view.

我知道JSF会处理整个页面,即使它们没有被包含在内,这就是我得到这个例外的原因.

任何聪明的方法来解决这个问题,而无需更改包含页面内的组件的ID(虽然它的工作原理,但异常是烦人的,似乎有些不对劲).

我也不想用一些具有不同ID的容器组件来包装每个页面,因此它们将具有不同的FULL ID,如formId:fieldID,因为母版页也指这些组件中的这些组件!

jsf conditional rendered-attribute jsf-2 uiinclude

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

如何创建动态JSF表单字段

我发现了一些像这样的类似问题,但是有很多方法可以做到这让我更加困惑.

我们正在获取XML正在阅读的文件.其中XML包含有关需要显示的某些表单字段的信息.

所以我创建了这个DynamicField.java包含我们需要的所有信息的自定义:

public class DynamicField {
  private String label; // label of the field
  private String fieldKey; // some key to identify the field
  private String fieldValue; // the value of field
  private String type; // can be input,radio,selectbox etc

  // Getters + setters.
}
Run Code Online (Sandbox Code Playgroud)

所以我们有一个List<DynamicField>.

我想迭代这个列表并填充表单字段,使它看起来像这样:

<h:dataTable value="#{dynamicFields}" var="field">
    <my:someCustomComponent value="#{field}" />
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)

然后<my:someCustomComponent>将返回相应的JSF表单组件(即label,inputText)

另一种方法是只显示<my:someCustomComponent>,然后返回一个HtmlDataTable带有表单元素.(我认为这可能更容易).

哪种方法最好?有人可以告诉我一些链接或代码,它显示我如何创建这个?我更喜欢完整的代码示例,而不是像"你需要一个子类javax.faces.component.UIComponent" 这样的答案.

jsf components facelets dynamic-forms

21
推荐指数
2
解决办法
5万
查看次数

在<ui:repeat>中指定元素的条件渲染?<c:if>似乎不起作用

我试图有条件地使用建立自定义列表<ui:repeat>.在每次出现-1作为列表中的项目值时,我需要添加换行符.

我尝试在<c:if>里面<ui:repeat>使用它,但它似乎不起作用.它总是评估false.

<ul>      
    <ui:repeat value="#{topics.list}" var="topicId" >
        <li>#{topicId}</li>
        <c:if test="#{topicId eq -1}">  <br/>  </c:if>
    </ui:repeat>
</ul>
Run Code Online (Sandbox Code Playgroud)

这可能吗?

jsf jstl el jsf-2 uirepeat

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

JSTL c:如果在JSF h:dataTable中不起作用

我试图在状态结束时<c:if>有条件地放入一个<h:outputLink>内部<h:dataTable>.

<h:dataTable value="#{bean.items}" var="item" width="80%">
    <h:column>
        <f:facet name="header">
            <h:outputText value="State" />
        </f:facet>

        <c:if test="#{item.state != 'Finish'}">
            <h:outputText value="Missing value" />
        </c:if>
        <c:if test="#{item.state == 'Finish'}">
            <h:outputLink value="myLink">
                <h:outputText value="Value = #{item.state}" />
            </h:outputLink>
        </c:if>
    </h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)

但这不起作用,为什么会这样,我该如何解决?

datatable jsf jstl conditional-rendering

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

在JSF2 xhtml页面中声明并使用变量

<s:set var="buttonText" value="getText('person.button.add')"/>在JSTL中使用buttonText变量来设置文本.

有人告诉我如何在JSF EL中实现这一目标吗?

这里问的问题是JSF形式的IF-ELSE条件.需要知道正确的方法,但被告知作为一个单独的问题.

编辑:

我已经在上面添加了一个链接以获取详细信息,但这里又是

我在struts2项目中使用JSTL

 <s:if test="person==null || person.id==null || person.id==''">
                <s:set var="buttonText" value="getText('person.button.add')"/>
            </s:if>
            <s:else>
                <s:set var="buttonText" value="getText('person.button.edit')"/>
            </s:else>
Run Code Online (Sandbox Code Playgroud)

我想在JSF2中使用相同的方法,但使用表达式语言.我在一个变量中保存值,buttonText并在某个地方访问它#{buttonText}.我需要解决方法如何编写变量EL并使用它.希望清楚.

我只需要解决<s:set var="buttonText" value="getText('person.button.add')"/>代码行.

谢谢

jsf-2

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

什么是视图构建时间?

我是JSF的新手并且正在阅读像这样的一些堆栈答案,我面对视图构建时间的概念.考虑JSF生命周期方案:

在此输入图像描述

如您所见,没有称为视图构建时间的阶段.也许它意味着与恢复视图阶段相同?来自JavaEE教程

在此阶段,JavaServer Faces实现构建页面视图[...]

lifecycle jsf jsf-2

19
推荐指数
1
解决办法
3164
查看次数

<h:selectOneRadio>渲染表格元素,如何避免这种情况?

有没有办法告诉JSF它<table>在使用时不应该呈现元素<h:selectOneRadio>?我不使用表格,在这种情况下它完全没有意义.

任何帮助表示赞赏!

jsf html-table selectoneradio

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

如何将Bean中的项目列表显示到JSF网页上?

我是JSF的新手,在学习构建在线书店应用程序的过程中.

我有1个班级和1个豆子:Book.javaBookCatelogBean.java.Book类有3个属性:id,titleauthor它相应的getter和setter.该BookCatelogBean包含ArrayList<Book>在那里我用填充它Books(在将来,我将它连接到数据库).

我有两页:index.xhtmlbook.xhtml.我想显示index.xhtml每个格式为REST链接的书名列表及其ID book.xhtml,如下所示:<h:link outcome="book?id=#{bookCatelogBean.id}" value="#{bookCatelogBean.title}" />

我知道如何使用BookCatelogBean显示1,book但我想显示所有这些?我有一个想法,调用一个方法来BookCatelogBean调用getAllBooks(),返回每个书籍标题,但我如何将它们中的每一个返回到index.xhtml作为JavaserverFace链接而不是字符串?

谢谢

这是我的代码:

Book.java

package bookshop;

import java.io.Serializable;

public class Book implements Serializable {

    private int id;
    private String title;
    private String author;

    public Book(int id, String title, String author){
        this.title = title;
        this.id = id;
        this.author = author;
    }

    public …
Run Code Online (Sandbox Code Playgroud)

iteration collections jsf loops jsf-2

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