用友NC系统支持JSF+PrimeFaces配置参考

适用产品版本: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表示登陆成功

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值