Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF中JSP scriptlet方法调用的等价物_Jsf_Jsf 2_Facelets_Scriptlet - Fatal编程技术网

JSF中JSP scriptlet方法调用的等价物

JSF中JSP scriptlet方法调用的等价物,jsf,jsf-2,facelets,scriptlet,Jsf,Jsf 2,Facelets,Scriptlet,我需要将JSP文件转换为等效的JSF文件。JSP如下所示: 步骤1:类导入: <%@ page import="org.keycloak.constants.ServiceUrlConstants" %> <%@ page import="org.keycloak.common.util.KeycloakUriBuilder" %> <%@ page session="false" %> <html> 步骤2:定义一个变量: <%

我需要将JSP文件转换为等效的JSF文件。JSP如下所示:

步骤1:类导入:

<%@ page import="org.keycloak.constants.ServiceUrlConstants" %>
<%@ page import="org.keycloak.common.util.KeycloakUriBuilder" %>
<%@ page session="false" %>
<html>

步骤2:定义一个变量:

<%
        String logoutUri = KeycloakUriBuilder.fromUri("/auth").path(ServiceUrlConstants.TOKEN_SERVICE_LOGOUT_PATH).queryParam("redirect_uri", "/customer-portal").build("demo").toString();  %>
<a href="<%=logoutUri%>">logout</a>

步骤3:然后引用此变量:

<%
        String logoutUri = KeycloakUriBuilder.fromUri("/auth").path(ServiceUrlConstants.TOKEN_SERVICE_LOGOUT_PATH).queryParam("redirect_uri", "/customer-portal").build("demo").toString();  %>
<a href="<%=logoutUri%>">logout</a>

导入的库是项目中的外部库。在JSF中,我知道如何执行步骤3。但我不知道如何导入步骤1中的类,以及如何定义JSF中步骤2所示的变量


在JSF中有没有一种执行步骤1-3的等效方法?谢谢。

您不能在JSF中直接调用方法或创建变量,因此不需要导入。 唯一的方法是使用EL表达式。 由于使用EL不可能调用静态方法,因此您必须自己创建一个Bean,以便调用
keydavepuribuilder.fromUri…
使用命名Bean可以调用其方法:

例如:

import java.io.Serializable;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
//This Bean is available by default under the Name 'myBean', you can change it in the @Named Annotation if desired
@Named
@RequestScoped
public class MyBean implements Serializable { 

    public String myMethod(String inupt){
        return "Hello " + input;
    }
}

你可以用

#{myBean.name}
如果需要值(用于输出),JSF将调用getter;如果需要设置值(来自输入字段),JSF将调用Setter

也不需要,也不可能。 在JSF中,Bean有一个作用域,这个带有
RequestScoped
的示例应该很好地匹配
——一个请求作用域Bean只对一个请求有效,之后Bean被释放。对于会话处于活动状态的Bean,还有许多其他作用域,例如
@SessionScoped
(来自
javax.enterprise.context

正如另一位用户所提到的,这些作用域存在于CDI变体(Package
javax.enterprise.context
)和JSF变体(Package
javax.faces.bean
)中。您应该使用CDI变体,因为JSF变体可能很快就会被弃用(请参阅)


范围说明请参见。

@hinneLins,明白了。那么JSP中的“”呢?如何在JSF中实现这一点?请在新问题中提出新问题。太好了。谢谢你的信息。
#{myBean.name}