标签: el

如何在 JSTL 中显示包含 objetcs 的列表的数据?

在请求属性中,我有对象列表(例如用户对象),那么如何循环它在我的 jsp 页面上显示数据?我可以使用<c:foreach>,但是我怎么能说它是 User 对象并访问它的属性呢?

jsp jstl el

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

jsp:useBean 调用类中的特定方法

如何使用此标签调用类中的特定方法?

<jsp:useBean id="user" scope="??" class="com.example.User" type="com.example.User" />

java jsp jstl el

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

jstl: 无法解析表达式 [${item.class.name == 'List'}]

下面的 jstl 代码应该基于此控制器方法解析 json 文件:

控制器

@RequestMapping(value="listagem.json", method=RequestMethod.GET)
@PreAuthorize("hasPermission(#user, 'listagem_'+#this.this.name)")
public ModelAndView listagem_json(@RequestParam("pagina") String pagina, @RequestParam("items") String items, @RequestParam("ordem") String ordem) {
    ModelAndView mav = new ModelAndView();

    mav.setViewName("listagem");        
    mav.addObject("lista", serv.listagem(pagina, items, ordem));
    mav.addObject("map", serv.getListaAtributos());

    return mav;
}
Run Code Online (Sandbox Code Playgroud)

jstl代码

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>
<json:object>
    <json:array name="item" var="item" items="${lista}">
          <json:object>
            <c:forEach var="attr" items="${map}">
                <c:choose>
                    <c:when test="${empty attr.value}">
                        <json:property name="${attr.key}" value="${item[attr.key]}"/>
                    </c:when>
                    <c:otherwise>
                        <c:choose>
                            <c:when test="${item.class.name == 'List'}">
                                <json:array name="${attr.key}" var="attr2" items="${item[attr.key]}">
                                    <json:object>
                                        <c:forEach var="attr3" items="${attr.value}">
                                            <json:property …
Run Code Online (Sandbox Code Playgroud)

java json jsp jstl el

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

如何在httpd proxypass后面的EL spring-boot页面中获取原始请求URI

我有一个带有嵌入式 tomcat 的 spring-boot web 应用程序,运行在端口 28081 上,httpd 配置为这样的代理:

ProxyPass / http://localhost:28081/
ProxyPassReverse / http://localhost:28081/
Run Code Online (Sandbox Code Playgroud)

然后在 jsp 页面中,我需要将完整的请求 URL 传递给 Silverlight 小部件;但是

${pageContext.request.serverName}:${pageContext.request.serverPort}
Run Code Online (Sandbox Code Playgroud)

将解决http://localhost:28081

所以我想依靠X-Forwarded-Host,但有些情况下它确实包含多个代理地址,用逗号分隔。我不确定相信地址的顺序将被保留是否安全。

有没有更好的方法来做到这一点,是在 jsp 中,在 httpd 配置中还是在控制器代码中?

apache el proxypass embedded-tomcat-7 spring-boot

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

将方法表达式属性传递给嵌套复合组件

我有复合组件DocumentSelector,它包含另一个复合组件modalWindow.

<cc:interface componentType="selector.DocumentSelector">
     <cc:attribute name="showSelector"
              method-signature="void listener(java.util.List)"/>
</cc:interface>

<cc:implementation>

    <div id="#{cc.clientId}">
        <ccs:modalWindow id="modal_window" showListener="#{cc.showSelector}"
                     mode="ajax">

        </ccs:modalWindow>
    </div>
</cc:implementation>
Run Code Online (Sandbox Code Playgroud)

我需要将方法从faces组件传递#{cc.showSelector}给复合modalWindow组件DocumentSelector.但我有PropertyNotFoundException 因为与组件ElResolver相关而不是#{cc}modalWindowDocumentSelector

modalWindow组件:

<cc:interface componentType="statistics.ModalWindow">
    <cc:attribute name="showListener" method-signature="void show()"/>
    <cc:attribute name="hideListener" method-signature="void hide()"/>
</cc:interface>
<cc:implementation>
</cc:implementation> 
Run Code Online (Sandbox Code Playgroud)

我使用Java EE 7,JSF 2.2,WildFly 8.2.0

jsf el composite-component jsf-2

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

jsf给出方法未找到异常虽然它在那里,javax.el.MethodNotFoundException

尝试h:dataTable使用支持 bean显示 a 时出现以下异常

javax.faces.el.MethodNotFoundException: javax.el.MethodNotFoundException: /table.xhtml @29,36 action="#{user.editEmployee}": Method not found: com.jason.jsf.User@1df228e.editEmployee()
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98)
javax.faces.component.UICommand.broadcast(UICommand.java:311)
javax.faces.component.UIData.broadcast(UIData.java:912)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1246)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Run Code Online (Sandbox Code Playgroud)

当我使用这些文件执行以下代码时,因为我是 jsf 的新手并且正在学习,请帮忙做一些解释

雇员.java

 package com.jason.jsf;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name = "employee", eager = true)
@SessionScoped
public class Employee {

    private String Id, name;
    private boolean canEdit;

    public Employee() {
        super();
        // TODO Auto-generated constructor stub
    }

    public Employee(String id, String name) {
        super();
        Id = id;
        this.name = name;
    }

    public String …
Run Code Online (Sandbox Code Playgroud)

jsf el jsf-2

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

如何使用EL 3.0引用静态变量?

我试图在我的JSF页面中获取一个静态变量.

我按照这篇文章的说明.我可以使用Primefaces扩展来获取变量,但是,在执行以下操作时,我没有在xhtml中获得任何内容.

我有一个常量文件:

public class Test {
    public static final String NAME = "EL Test";
}
Run Code Online (Sandbox Code Playgroud)

在balusC的帖子之后,我添加了一个应用程序范围的bean(但是,每次请求都会调用它):

import java.lang.reflect.Field;
import javax.annotation.PostConstruct;
import javax.el.ELContextEvent;
import javax.el.ELContextListener;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

@ManagedBean(eager = true)
@ApplicationScoped
public class Config {
    @PostConstruct
    public void init() {
        FacesContext.getCurrentInstance().getApplication().addELContextListener(new ELContextListener() {
            @Override
            public void contextCreated(ELContextEvent event) {
                event.getELContext().getImportHandler().importClass("my.package.constants.Test");
                Class<?> clazz = event.getELContext().getImportHandler().resolveClass("Test");
                for (Field field : clazz.getFields()) {
                    System.out.println(field.getName());
                }
                System.out.println("clazz = " + clazz);
                System.out.println(clazz.getPackage());
            }
        });
    }
} …
Run Code Online (Sandbox Code Playgroud)

java el primefaces jsf-2 tomcat8

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

ui:param - 传递方法参数

我有两个 xhtml 文件,一个包含另一个。我已经知道如何将控制器和要调用的方法传递给对话框,我不确定是否可能,是将参数/对象实际传递给将被调用的方法。我尝试了类似的方法,但是 Eclipse 告诉我这部分有语法错误

actionListener="#{bean[confMethod(param1, param2)]}"

但它没有任何问题

actionListener="#{bean[confMethod]}"

文件1.xhtml:

<ui:composition>
.....
    <ui:include src="/jsf/include/dg_confirm.xhtml">
        <ui:param name="bean" value="#{myController}" />
        <ui:param name="question" value="Are you sure?" />
        <ui:param name="confMethod" value="myMethod" />
        <ui:param name="param1" value="#{otherController.param1}" />
        <ui:param name="param2" value="#{urlToFollow}" />
    </ui:include>

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

和对话框

dg_confirm.xhtml

....
<p:commandButton value="Yes" oncomplete="PF('dlg_conf').hide();" actionListener="#{bean[confMethod(param1, param2)]}" ajax="false"/>
.....
Run Code Online (Sandbox Code Playgroud)

问题:是否可以在 JSF 中以某种方式传递方法的参数?

jsf el

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

用作 JSF 值的 Java 记录

我正在使用 Java 15 和 JSF 2.3 以及 PrimeFaces 8 开发一个简单的 JSF Web 应用程序(主要用于学习),并且我正在使用一个简单的 Java 记录来对实体进行建模。该应用程序不使用任何数据库。

我的问题是是否可以将 java 记录用作 xhtml 页面中的值,如下所示

    <p:column headerText="Id">
        <h:outputText value="#{car.randomId}" />
    </p:column>

Run Code Online (Sandbox Code Playgroud)

因为我收到以下错误 javax.el.PropertyNotFoundException: The class 'com.company.Car' does not have the property 'id'.。我试过放置car.year(),但没有用。记录的定义是这个

public record Car (String randomId, String randomBrand, int randomYear, String randomColor, int randomPrice, boolean randomSoldState) {
}
Run Code Online (Sandbox Code Playgroud)

在 pom.xml 中,我使用以下 api

        <dependency>
            <groupId>jakarta.platform</groupId>
            <artifactId>jakarta.jakartaee-api</artifactId>
            <version>8.0.0</version>
            <scope>provided</scope>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助!

jsf el java-record

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

$ {pageContext.request.contextPath}不适用于纯HTML

我正在使用tomcat 7.0.现在我面临一个无法加载css和js文件的问题.尝试添加$ {pageContext.request.contextPath}但不起作用,也尝试了c:url标签,但在eclipse中遇到语法错误.

这些文件的结构是:

WebContent
-content/css/lab3.css
html和js文件夹也在内容文件夹下

<?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_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>lab3</display-name>
  <welcome-file-list>
    <welcome-file>/content/html/lab3.html</welcome-file>
  </welcome-file-list>
</web-app>
Run Code Online (Sandbox Code Playgroud)

这是html头:

<link rel="stylesheet" type= "text/css" href= "${pageContext.request.contextPath}/css/lab3.css"  media="screen, projection">
Run Code Online (Sandbox Code Playgroud)

tomcat el

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