相关疑难解决方法(0)

JSF2 Facelets中的JSTL有意义吗?

我想有条件地输出一些Facelets代码.

为此,JSTL标签似乎工作正常:

<c:if test="${lpc.verbose}">
    ...
</c:if>
Run Code Online (Sandbox Code Playgroud)

但是,我不确定这是否是最佳做法?还有另一种方法来实现我的目标吗?

jsf jstl facelets jsf-2

159
推荐指数
2
解决办法
8万
查看次数

解析XHTML时出错:元素的内容必须由格式良好的字符数据或标记组成

作为这个问题的扩展,我试图将Javascript插入到已经呈现ajax表<h:commandButton />onclick属性action中.

我想做什么:在列表框中获取所选项目并将其转换为要在JSF中使用的参数FileServlet.即para2=value1&param=value2&param=value3

这就是我所拥有的:

<script type ="text/javascript">
function myScript() {
    var box = document.getElementbyId('myForm:box');
    var length = box.options.length;
    var paramstring = "";
    for (var i = 0; i < length; i++) {
        if (i != (length - 1) {
            if (box.options[i].selected) {
                paramstring = paramstring + "param=" + box.options[i].value + "&amp;";
            }
        } else {
            paramstring = paramstring + "param=" + box.options[i].value;
        }
    }
    if (document.getElementById('myForm:checkbox').checked) {
        window.location='fileServlet? + …
Run Code Online (Sandbox Code Playgroud)

javascript xhtml jsf facelets jsf-2

38
推荐指数
3
解决办法
11万
查看次数

使用JSF在EL中表示if-elseif-else

以下JSF代码包含两个单独的<c:if></c:if>.我们来看看吧.

<?xml version='1.0' encoding='UTF-8' ?>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
    <h:head>
        <title>JSF EL</title>
    </h:head>
    <h:body>
        <h:form>

            <c:set scope="request" var="row" property="x" value="10"/>

            <c:if test="#{row==10}">
                <h:outputLabel value="value = 10"/>
            </c:if>

            <c:if test="#{row==15}">
                <h:outputLabel value="value = 15"/>
            </c:if>

        </h:form>
    </h:body>
</html>
Run Code Online (Sandbox Code Playgroud)

它只是在运行时在JSF页面上显示value = 10.我需要<c:if></c:if>使用以下if-elseif-else(Java上下文)来表示上述内容.

if(row.equals(10))
{
    //Do something...(JSF stuff)
}
else if(row.equals(15))
{
    //Do something...(JSF stuff)
}
else
{
    //Do something...(JSF stuff)
}
Run Code Online (Sandbox Code Playgroud)

如何使用JSF用表达式语言(EL)表示?

jsf el

38
推荐指数
3
解决办法
15万
查看次数

当我想要ajax-update时,为什么我需要在另一个组件中嵌入一个带有render ="#{some}"的组件?

所以我找到了一些接近这个的答案,我发现足以解决我遇到的问题.但即使这样,我也很好奇了解这方面的运作方式.让我用一个例子来说明:

我有一个.xhtml看起来像这样(缩短)的facelet 页面.

<h:form id="resultForm">

    <h:panelGroup class="search_form" layout="block">
        <h:inputText id="lastname" value="#{search.lastname}"/>
        <h:commandButton action="#{search.find}" value="Find">
            <f:ajax execute="lastname" render="resultDisplay"/>
        </h:commandButton>
    </h:panelGroup>

    <h:dataTable value="#{search.searchResults}" var="results" id="resultDisplay"
            rendered="#{!empty search.searchResults}">  
        <h:column>
            #{results.field}
        </h:column>
    </h:dataTable>

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

现在,为了突破性,我不会发布所有的支持bean代码,但我有这样的东西:

public void find() {
    searchResults = setResults(true);
}
Run Code Online (Sandbox Code Playgroud)

哪里searchResultsArrayList<Objects>.在搜索之后,它不是null - 在多个测试中检查(可以为null,但不在我正在进行的测试中).

现在.这不起作用.

但是,如果我将dataTable内部嵌套在另一个内部panelGroup,那么它会起作用.

<h:panelGroup id="resultDisplay">
    <h:dataTable value="#{search.searchResults}" var="results"
        rendered="#{!empty search.searchResults}">  
        <h:column>
            #{results.field}
        </h:column>
    </h:dataTable>
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

现在,这种变化可以让一切正常.我对此感到满意......但我想我也在寻求一些理解.有关为什么我必须嵌套这些组件的任何见解?我肯定错过了一些东西!

jsf facelets jsf-2 conditional-rendering ajax-update

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

@ViewScoped在每个回发请求上调用@PostConstruct

这似乎不对.我正在清理我的代码,我只是注意到了这一点.每个ajax请求都会触发构造函数和@PostConstruct我的@ViewScopedbean.即使是简单的数据库分页也会触发它.

知道@ViewScoped@RequestScoped任何请求都要重建并且不应该重建.只有在通过GET重新加载完整页面之后.

jsf constructor postconstruct jsf-2 view-scope

28
推荐指数
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万
查看次数

基于用户角色渲染JSF组件

如何根据登录用户的角色呈现JSF组件?我知道外部上下文暴露了主体,但是我应该如何在JSF中正确地进行呈现?在JSP中它会是这样的

<% isUserInRole(Roles.ADMIN) { %>
<button>Edit!</button>
<% } %>
Run Code Online (Sandbox Code Playgroud)

我如何以最好的方式在JSF中编写这个?我最好的猜测是渲染属性绑定到一个返回布尔值的支持bean的方法,但如果我必须只为管理员渲染一些导航项,那将引入一个无关的支持bean ...

Glassfish V3.1,JSF 2.x

jsf jsf-2

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

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

非JSF组件的条件呈现(普通的HTML和模板文本)

我试图有条件地渲染一个<tr>因此我不能使用<h:panelGroup>,因为它将渲染<span> or <div>

我目前的(工作)方法如下:

<h:outputFormat rendered="#{negotiator.maySend}">
    <tr> my tr stuff </tr>
</h:outputFormat>
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我不确定这是否是滥用的方式<h:outputFormat>- 在我使用之前,<h:outputLabel>但这是<label>在IE 中呈现的.

我也已经阅读了这个问题的答案,但如上所述,它们不会对我有用,因为<tr>:如何不在JSF中渲染整个块?

html jsf conditional-rendering

11
推荐指数
1
解决办法
9671
查看次数

如何在JSF中隐藏元素?

是否可以div根据条件隐藏等等(就像你在EL中使用渲染属性一样),而不必将其包装在<h:panelGrid ...>具有渲染属性的etc中?它破坏了我的布局.我只需要逻辑,而不是布局.

jsf

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