您不能直接在JSF中調用Methods或創建變量,因此您不需要導入。 唯一的方法是使用EL表達式。 由於調用靜態方法是不可能的EL,你必須自己創建一個Bean,使的KeycloakUriBuilder.fromUri...
調用一個叫豆你調用它的方法:
例子:
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>
顯示頁面上的某些內容的首選方式是使用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有一個範圍,這個例子的RequestScoped
應該是<%@ page session="false" %>
的一個很好的匹配 - 一個請求作用域Bean只爲一個請求生存,然後Bean被處置。還有許多其他示波器,例如@SessionScoped
(來自javax.enterprise.context
),只要會話處於活動狀態,就會生活一次。
正如其他用戶所述,這些範圍存在於CDI變體(包javax.enterprise.context
)和JSF變體(包javax.faces.bean
)中。您應該使用CDI Variant,因爲JSF Variant可能會很快被棄用(請參閱here)。
示波器的說明參見here。
@hinneLins,明白了。那麼JSP中的「<%@ page session =」false「%>」呢?如何在JSF中實現這一點? – user697911
我更新了答案 – hinneLinks
請在新問題中提出新問題。 – BalusC