适用产品版本:NC57以及NC65
bean管理方式:ManagedBean,须配置文件注册
配置步骤:
1、需要的类包括:jsf-api-2.2.20.jar,jsf-impl-2.2.20.jar,el-api-2.2.jar, el-impl-2.2.jar,下载后放置到nchome\external\lib目录下(也可放置在自定义web应用的\WEB-INF\lib目录下)。
2、在nchome\hotwebs目录下创建web应用,并在WEB-INF目录下配置web.xml和faces-config.xml
其中web.xml中增加jsf支持
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" id="WebApp">
...
<!-- Define the JSF servlet (manages the request processing life cycle for JavaServer Faces) -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map following files to the JSF servlet -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
...
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
faces-config.xml 用于bean的定义,bean对应的类应放置于/WEB-INF/classes下
<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
<managed-bean>
<managed-bean-name>helloWorld</managed-bean-name>
<managed-bean-class>com.codenotfound.primefaces.HelloWorld</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
...
</faces-config>
测试Bean代码
package com.codenotfound.primefaces;
import java.io.Serializable;
public class HelloWorld implements Serializable {
/**
*
*/
private static final long serialVersionUID = -7844457420994424501L;
/**
*
*/
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public HelloWorld() {
super();
// TODO Auto-generated constructor stub
firstName = "John";
lastName = "Doe";
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String showGreeting() {
return "Hello " + firstName + " " + lastName + "!";
}
}
如果使用PrimeFace,需要将Primeface的primefaces-6.2.jar以及all-themes-1.0.10.jar放置于/WEB-INF/lib下,由于NC57仅支持JDK1.5和JDK1.6,因此primeface需要选择对应的版本,NC65支持jdk1.7,可使用Primefaces7
在web.xml中设置primeface的theme
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>bootstrap</param-value>
</context-param>
测试helloworld.xhtml
<?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.org/ui">
<h:head>
<title>PrimeFaces Hello World Example</title>
</h:head>
<h:body>
<h:form>
<p:panel header="PrimeFaces Hello World Example">
<h:panelGrid columns="2" cellpadding="4">
<h:outputText value="First Name: " />
<p:inputText value="#{helloWorld.firstName}" />
<h:outputText value="Last Name: " />
<p:inputText value="#{helloWorld.lastName}" />
<p:commandButton value="Submit" update="greeting"
oncomplete="PF('greetingDialog').show()" />
</h:panelGrid>
</p:panel>
<p:dialog header="Greeting" widgetVar="greetingDialog"
modal="true" resizable="false">
<h:panelGrid id="greeting" columns="1" cellpadding="4">
<h:outputText value="#{helloWorld.showGreeting()}" />
</h:panelGrid>
</p:dialog>
</h:form>
</h:body>
</html>
页面访问运行结果如下:
NC65设计时,如果需要调用NC接口,需要处理登陆验证,可采用两种处理方式:
1、直接使用令牌回调接口
NCLocator.getInstance().lookup(ISecurityTokenCallback.class).token("NCSystem".getBytes(),"pfxx".getBytes());
2、调用后台登陆
//根据实际环境设置
String groupcode = "";
String password = "";
String userName = "";
AuthenSubject authenSub = new AuthenSubject();
authenSub.setUserCode(userName);
authenSub.setUserPWD(password);
LoginRequest loginRequest = new LoginRequest();
loginRequest.putAttachProp(AuthenSubject.class.getName(), authenSub);
loginRequest.setUserCode(userName);
loginRequest.setUserPWD(password);
loginRequest.setLangCode("cn");
loginRequest.setBusiCenterCode(groupcode );
InvocationInfoProxy.getInstance().setUserCode(userName);
INCLoginService loginService = (INCLoginService) NCLocator
.getInstance().lookup(INCLoginService.class);
LoginResponse loginRespnse = loginService.login(loginRequest, true);
int loginResult = loginRespnse.getLoginResult(); //返回0表示登陆成功