您不能在JSF中直接调用方法或创建变量,因此不需要导入。
唯一的方法是使用EL表达式。
由于使用EL无法调用静态方法,因此您必须为自己创建一个Bean
KeycloakUriBuilder.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;
}
}
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core" >
<head></head>
<body>
<h:outputText value ="#{myBean.myMethod('world')}"/>
</body>
</html>
将为您提供以下HTML:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>Hello world
</body>
</html>
在页面上显示Something的首选方式是使用getter和Setter,如果您有一个带有getter和Setter的字段
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
你可以使用
#{myBean.name}
如果JSF需要值(用于输出),它将调用getter;如果需要设置值(来自输入字段),则调用Setter
这个
<%@ page session="false" %>
也不需要也不可能。
在JSF中,Bean有一个Scope,这个例子
RequestScoped
应该很适合
<%@页面会话=“false”%>
-请求范围Bean只对一个请求有效,之后Bean被释放。还有许多其他范围,例如。
@SessionScoped
(来自
javax.enterprise.context
)对于只要会话处于活动状态的Bean。
如另一位用户所述,这些作用域存在于CDI变体(包
javax.enterprise.context
)和JSF变体(包
javax.faces.bean
). 您应该使用CDI变体,因为JSF变体可能很快就会被弃用(请参见
here
).
范围说明请参见
here
.