相关疑难解决方法(0)

如何在JSF表达式语言中获得列表的长度?

如何获得ArrayList使用JSF EL表达式的长度?

#{MyBean.somelist.length}
Run Code Online (Sandbox Code Playgroud)

不起作用.

java jsf jsp jstl el

116
推荐指数
4
解决办法
12万
查看次数

如何将选定的行传递给dataTable中的commandLink或ui:repeat?

我在JSF 2应用程序中使用Primefaces.我有一个<p:dataTable>,而不是选择行,我希望用户能够直接对各行执行各种操作.为此,我<p:commandLink>在最后一栏中有几个.

我的问题:如何将行ID传递给命令链接启动的操作,以便我知道要对哪一行进行操作?我尝试使用<f:attribute>:

<p:dataTable value="#{bean.items}" var="item">
    ...
    <p:column>
        <p:commandLink actionListener="#{bean.insert}" value="insert">
            <f:attribute name="id" value="#{item.id}" />
        </p:commandLink>
    </p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)

但它总是产生0 - 显然在f呈现属性时行变量不可用(当我使用固定值时它可以工作).

有人有替代解决方案吗?

datatable jsf parameter-passing commandlink jsf-2

97
推荐指数
3
解决办法
17万
查看次数

如何创建自定义EL函数来调用静态方法?

我是JSF 2的新手.我的问题是关于BalusC对这个问题的回答jsf2 ajax基于请求参数更新部件 我尝试了kickstart代码BalusC发布并且我遇到了EL解析错误:

 /nameofpage.xhtml @12,64 rendered="#{bean.panels.contains('u1')}"
 Error Parsing: #{bean.panels.contains('u1')}
Run Code Online (Sandbox Code Playgroud)

我想这是因为我没有运行一个支持Servlet 3.0/EL 2.2的容器,并且根据Servlet 3.0规范声明了/WEB-INF/web.xml.我正在使用Tomcat 6.

BalusC在他的回答中建议创建一个自定义EL功能.但是如何使用自定义EL功能完成此操作?或者只需配置我项目的某些部分即可解决这个问题?

以下是我的web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>    
  </context-param>      
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>
Run Code Online (Sandbox Code Playgroud)

jsf static-methods function el jsf-2

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

为什么@PostConstruct回调每次都会触发,即使bean是@ViewScoped?JSF

我在页面上使用datatable并使用绑定属性将其绑定到我的支持bean.这是我的代码: -

<?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:p="http://primefaces.prime.com.tr/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
            <h:form prependId="false">

                <h:dataTable var="item" value="#{testBean.stringCollection}" binding="#{testBean.dataTable}">
                    <h:column>
                        <h:outputText value="#{item}"/>
                    </h:column>
                    <h:column>
                        <h:commandButton value="Click" actionListener="#{testBean.action}"/>
                    </h:column>
                </h:dataTable>

            </h:form>

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

这是我的豆子: -

package managedBeans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.html.HtmlDataTable;

@ManagedBean(name="testBean")
@ViewScoped
public class testBean implements Serializable {

    private List<String> stringCollection;

    public List<String> getStringCollection() {
        return stringCollection;
    }

    public void …
Run Code Online (Sandbox Code Playgroud)

jsf facelets postconstruct view-scope

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

如何在JSF中调用带参数的方法

我有一个显示文件夹内容的JSF页面(实际上它是一个dropbox的帐户内容).

我正在使用dataTable来呈现ListArray对象的内容:

<h:dataTable style="text-align: left" width="600" var="dContent" value="#{backedBean.contents}">
  <h:column>
    <f:facet name="header">
      <f:verbatim>NAME</f:verbatim>
    </f:facet>
    <h:commandButton value="#{dContent.fileName}" action="#{backedBean.updateContents(dContent)}"/>
  </h:column>
  <h:column>
    <f:facet name="header">
      <f:verbatim>SIZE</f:verbatim>
    </f:facet>
    <h:outputText value="#{dContent.size}"/>
  </h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)

但是当我运行此页面时,我收到以下错误:

/browse.xhtml @ 34,110 action ="#{backedBean.updateContents(dContent)}"错误解析:#{backedBean.updateContents(dContent)}
...
...
由以下引起:org.apache.el.parser.ParseException:遇到""(""(""在第1行,第28栏.期待其中一个:
"}"...
"."......
""
""
"" ">"... "gt".. .
"<"...
"lt"...
"> ="......
"ge"
...
......

有趣的是,Netbeans能够自动完成方法名称,所以我想象我的后端bean是好的.仅当我使用参数调用方法时才会出现此问题.

有任何想法吗?

非常感谢

jsf jsf-2

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

如何在JSF EL中显示List#size()的值?

我想知道是否有办法将方法的返回值绑定到JSF组件中.我会更好地解释自己.假设我有这样一个类:

public class Document {
   private List<Attachment> attachments;
   //getter and setter here
}
Run Code Online (Sandbox Code Playgroud)

这个类通过一个名为currentDocument的属性中的注册托管bean暴露给jsf,并以这种方式用于jsf

<h:outputText value="#{myManagedBean.currentDocument.attachment.size}" />
Run Code Online (Sandbox Code Playgroud)

我知道,这是不正确的.但是这样做的正确方法是什么?我应该在Document类上创建一个属性,让我们说numberOfAttachments,并绑定到那个,或者有一种方法直接绑定方法的返回值?

jsf binding el jsf-2

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

Primefaces如何更新对话框中的内容并保持对话框居中?

我有一个对话框,其中不包含页面加载的内容,我根据用户点击的链接动态设置对话框的内容.

<p:dialog widgetVar="dlg" modal="true" id="dialog">
    <p:panel id="fullArticle">
        <h:outputText value="#{content.newsArticle}" escape="false" />
    </p:panel>
 </p:dialog>
...
...
<p:commandLink value="Read more" actionListener="#{content.getFullArticle}" onclick='dlg.show();' update=":fullArticle">
    <f:attribute name="contentId" value="#{news.contentId}" />
</p:commandLink>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当您单击"阅读更多"链接时,它会显示对话框,但对话框不在页面的中心.如果我将commandLink上的udpate属性更改为update=":dialog",则对话框会闪烁,就好像它正在打开然后立即关闭一样.

如何更新对话框并使其以动态内容为中心?

jsf primefaces jsf-2

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

将EL 2.2与Tomcat 6.0.24一起使用

使用JSF 2,您应该能够这样做:

<h:commandButton action="#{myBean.myAction(myParameter)}"/>
Run Code Online (Sandbox Code Playgroud)

然后调用action方法,传入参数(假设它是一个Integer):

@ManagedBean
@SessionScoped
public class MyBean {
    ...
    public String myAction(Integer myParameter) {
        // do something
        return null;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

这完全适用于Glassfish v3.但是在Tomcat上没有,你得到一个ELException通知解析错误

Caused by: javax.el.ELException: Error Parsing: ...
Run Code Online (Sandbox Code Playgroud)

现在,通过替换Tomcat lib目录中的jar ,有一种记录的使用EL 2.2和Glassfish实现的工作方式el-api,但是我仍然得到相同的错误而没有运气.Tomcat真的开始让我感到沮丧!JSF2意味着更容易!

Maven POM片段:

<repositories>
  <repository>
    <id>sun</id>
    <url>http://download.java.net/maven/2/</url>
  </repository>
  <repository>
    <id>jboss</id>
    <url>http://repository.jboss.com/maven2/</url>
  </repository>
</repositories>
...
  <dependency>
    <groupId>javax.el</groupId>
    <artifactId>el-api</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
  </dependency>

  <dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>el-impl</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
  </dependency>
Run Code Online (Sandbox Code Playgroud)

更多信息.

这是堆栈跟踪的一部分,似乎它仍在使用Apache EL实现,而不是我转储到lib中的实现.我完全删除了el-api.jarTomcat附带的现有内容,是否有一个el-impl.jar我想移除的地方可能会覆盖一些东西?

Was expecting one of:
    "}" ... …
Run Code Online (Sandbox Code Playgroud)

parameters jsf action tomcat6

17
推荐指数
2
解决办法
4万
查看次数

如何查看服务器使用的EL版本

如何查看服务器使用的EL版本.我正在运行Websphere 7.EL类在j2ee.jar中,清单在下面.

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 2.4 (IBM Corporation)
Specification-Title: Java Platform, Enterprise Edition Specification
Specification-Version: 5.0
Specification-Vendor: Sun Microsystems, Inc.
Implementation-Title: Java Platform, Enterprise Edition Specification
Implementation-Version: 5.0
Implementation-Vendor: Sun Microsystems, Inc.
Class-Path: activation-impl.jar mail-impl.jar
Run Code Online (Sandbox Code Playgroud)

jsf el java-ee

15
推荐指数
1
解决办法
8732
查看次数

使用JSF页面中的参数调用bean方法

是否可以调用bean方法并直接从视图传递参数,而不是首先设置bean属性,然后使用commandButton或类似方法调用不带参数的方法?

我有一个项目列表,每个项目都有一个操作列表.为了减少状态,我使用单个曲面remoteCommand代替几个曲面commandButton.从视图中获取动作触发器时,我会调用remoteCommandfrom javascript,但由于它remoteCommand是一个但用于多个项目因此我需要传递项目的id.我想知道是否有办法将项目的id直接作为参数传递给bean方法,而不是先将其设置为bean属性?有没有办法这样做?

实际上,当页面上有很长的项目列表时,我正在寻找一种更好的方法来处理页面上的多个commandButtons.

建议?谢谢.


使用JSF 2.1.6 Mojarra和Primefaces 3.0RC1

jsf primefaces

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