[Nexacro] 넥사크로 N + SpringBoot 연동하기 2 - 프로젝트 설정 및 연동

2022. 5. 10. 00:18·공부/넥사크로
반응형

 

Uiadapter

넥사크로의 Uiadapter를 사용하려고 gradle을 통해 라이브러리를 다운하려 했지만 아직 자사의 Nexus 서버가 불안정해서 Gradle을 통한 자동 다운은 못한다고 한다.. - 20220509 기준

그래서 플레이넥사크로에서 다운해야 한다. 해당 게시글 제일 하단에 라이브러리 파일들이 있다. 다운하고 압축 푼 다음에 프로젝트 최상위 경로에 'libs' 폴더를 만들고 압축 푼 라이브러리 파일들을 옮겨주자.

그리고 맨 위에 있는 nexacro-xapi-java-1.0.0.jar 파일은 기술지원센터에서 따로 받아야된다. 저거 없으니까 설정할 때 에러남;
참고로 파일을 다운하기 위해 로그인이 필요하다. 
대메뉴 Product > Nexacro N > Download > Server [API,XENI]메뉴를 타고 들어가면 있다.

저 파일 역시 압축을 풀고 libs에 넣어준다.

 

그리고 build.gradle에 아래 코드 추가.

//외부 libs 추가
implementation fileTree(dir: 'libs', includes: ['*.jar'])

 

그리고 인텔리제이 우측에 Gradle을 클릭 후 refresh한다.

그러면 저기 폴더에는 안 보이는데 쨌든 import 해서 uiadapter를 사용할 수 있다.

 

 

넥사크로 프로젝트 생성 및 설정

라이선스가 필요하다. 라이선스는 기술지원센터에서 제공받을 수 있다.

넥사크로를 실행하고 새로운 프로젝트를 만든다. 나는 testProject라 명명했다. 중요한 건 경로다.

프로젝트\src\main

바로 이 위치에 놔주자.

그리고 프로젝트가 생성이 되었으면 Generate path를 지정해야 한다.
넥사크로 상단에 Tools > Options... 클릭
Generate 클릭 후 Generate Path를 지정해주면 된다. static의 하위 폴더로 넥사크로 프로젝트와 다른 이름은 지정 안 해봐서 이름을 다르게 지정해도 되나 모르겠다. 안전하게 넥사크로의 프로젝트와 똑같은 이름의 폴더 생성 후 지정해주면 된다.

src\main\resources\static\testProject

Path 지정 후 넥사크로 상단 메뉴 Generate > Regenerate > Application을 클릭해준다.

그리고 TypeDefinition > Services 더블클릭

svc와 nexacrolib를 추가해주자. nexacrolib는 NexacroConfig 설정할 때 계속 밑줄 쳐져서 보기 싫어가지고 추가했다.

 

그리고 FrameBase의 Form_Work에 버튼을 하나 추가한다.

대충했다..

그리고 스크립트 작성

this.Button00_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
	alert("연동 테스트 완료");
};

 

 

프로젝트 설정

이제 인텔리제이에서 설정 파일들을 만들어줘야 한다.

WebAppConfig

@Configuration
public class WebAppConfig implements WebMvcConfigurer {

    // view Resolver 경로 설정
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/jsp", ".jsp");
    }

    // 루트 "/" 접속 시 index 페이지로 포워딩
    @Override
    @Order(Ordered.HIGHEST_PRECEDENCE + 1)
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("forward:/index.html");
    }

    // Web Resource 경로 설정
    @Override
    @Order(Ordered.HIGHEST_PRECEDENCE + 2)
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/_resource_/**").addResourceLocations("classpath:/static/testProject/_resource_/");
        registry.addResourceHandler("/FrameBase/**").addResourceLocations("classpath:/static/testProject/FrameBase/");
        registry.addResourceHandler("/nexacrolib/**").addResourceLocations("classpath:/static/testProject/nexacrolib/");
        registry.addResourceHandler("/*.json").addResourceLocations("classpath:/static/testProject/");
        registry.addResourceHandler("/*.html").addResourceLocations("classpath:/static/testProject/");
        registry.addResourceHandler("/*.js").addResourceLocations("classpath:/static/testProject/");
    }

    // 메세지 소스 생성
    @Bean
    public ReloadableResourceBundleMessageSource messageSource() {
        ReloadableResourceBundleMessageSource source = new ReloadableResourceBundleMessageSource();

        //메세지 프로퍼티 팔일의 위치와 이름을 지정
        source.setBasename("classpath:/messages/message");
        //기본 인코딩을 지정한다.
        source.setDefaultEncoding("UTF-8");
        //프로퍼티 파일의 변경을 감지할 시간 간격을 지정한다.
        source.setCacheSeconds(60);
        //없는 메세지일 경우 예외를 발생시키는 대신 코드를 기본 메세지로 한다.
        source.setUseCodeAsDefaultMessage(true);
        return source;
    }

    // 변경된 언어 정보를 기억할 로케일 리졸버 생성
    // 여기서는 세션에 저장하는 방식 사용
    @Bean
    public SessionLocaleResolver localeResolver() {
        return new SessionLocaleResolver();
    }
//
//    // 언어 변경을 위한 인터셉터를 생성
    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor() {
        LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
        interceptor.setParamName("lang");
        return interceptor;
    }

    // 인터셉터 등록
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localeChangeInterceptor());
    }

}

내가 하나하나 다 작성한 건 아니고 플레이넥사크로에 있는 설정들을 참고했다. 이 파일에서 중요한 건 Web Resource 경로 설정 부분인데 static 다음 폴더명을 꼭 확인해야 한다.

 

NexacroConfig

@Configuration
public class NexacroConfig extends WebAppConfig implements WebMvcRegistrations {

    @Bean
    @Lazy(false)
    public ApplicationContextProvider applicationContextProvider() {
        return new ApplicationContextProvider();
    }

    @Override
    public RequestMappingHandlerAdapter getRequestMappingHandlerAdapter() {
        return new NexacroRequestMappingHandlerAdapter();
    }

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
        NexacroMethodArgumentResolver nexacroResolver = new NexacroMethodArgumentResolver();
        resolvers.add(nexacroResolver);
        super.addArgumentResolvers(resolvers);
    }

    @Override
    public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> handlers) {

        NexacroHandlerMethodReturnValueHandler returnValueHandler = new NexacroHandlerMethodReturnValueHandler();

        NexacroFileView nexacroFileView = new NexacroFileView();
        NexacroView nexacroView = new NexacroView();
        nexacroView.setDefaultContentType(PlatformType.CONTENT_TYPE_XML);
        nexacroView.setDefaultCharset("UTF-8");

        returnValueHandler.setView(nexacroView);
        returnValueHandler.setFileView(nexacroFileView);

        handlers.add(returnValueHandler);

        super.addReturnValueHandlers(handlers);
    }

    /**
     * 넥사크로플랫폼 에러 처리 ExceptionResolver 등록
     */
    @Override
    public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {

        NexacroView nexacroView = new NexacroView();
        nexacroView.setDefaultContentType(PlatformType.CONTENT_TYPE_XML);
        nexacroView.setDefaultCharset("UTF-8");

        NexacroMappingExceptionResolver nexacroException = new NexacroMappingExceptionResolver();

        nexacroException.setView(nexacroView);
        nexacroException.setShouldLogStackTrace(true);
        nexacroException.setShouldSendStackTrace(true);
        nexacroException.setDefaultErrorMsg("fail.common.msg");
        nexacroException.setMessageSource(messageSource());
        nexacroException.setOrder(1);
        resolvers.add(nexacroException);

        super.configureHandlerExceptionResolvers(resolvers);
    }
}

이 설정 코드도 역시 플레이넥사크로에서 참고했고, 불필요한 코드는 최대한 제거했다.

 

설정 후 서버 라이선스 파일을 src\main\resources에 추가한다.

 

그리고 서버 시작하고 크롬에 localhost:8080으로 접속하면

 

페이지가 잘 뜬다..^^

끝!

 

- 이전 글

 

[Nexacro] 넥사크로 + SpringBoot 연동하기 1 - 프로젝트 생성

SpringBoot 프로젝트 생성 SpringBoot 프로젝트를 생성하기 위해 https://start.spring.io/ 접속 SpringBoot를 다음과 같이 설정한다. Gradle Project Java 11 2.6.7 (20220509 기준) Artifact : nexacro Name :..

devhan.tistory.com

 


  • 참고 
 

play nexacro:플레이 넥사크로

Play Nexacro is a community site for nexacro platform. 넥사크로 플랫폼 사용자 커뮤니티

www.playnexacro.com

 

 

play nexacro:플레이 넥사크로

Play Nexacro is a community site for nexacro platform. 넥사크로 플랫폼 사용자 커뮤니티

www.playnexacro.com

 

반응형
저작자표시 비영리 변경금지 (새창열림)
'공부/넥사크로' 카테고리의 다른 글
  • 넥사크로 그리드 expr에서 사용자 정의 함수 호출하기
  • 넥사크로 그리드 셀 클릭 시 바인드 된 컬럼명 알아내기
  • [Nexacro] 넥사크로 N + SpringBoot 연동하기 1 - 프로젝트 생성
  • 전자정부 표준 프레임워크와 넥사크로 연동하기_2
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    개발자
    프로그래머스
    스프링부트
    방통대
    SpringBoot를 이용한 RESTful Web Service 개발
    기출문제
    토비의스프링부트
    운영체제
    알고리즘
    넥사크로
    Spring
    egov
    springboot
    토이프로젝트
    인프런
    전자정부프레임워크
    JPA
    SQL
    Java
    IT
    react
    코딩테스트
    MSA
    자바스크립트
    백준
    QueryDSL
    RESTful
    프론트엔드
    에러해결
    oracle
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
[Nexacro] 넥사크로 N + SpringBoot 연동하기 2 - 프로젝트 설정 및 연동
상단으로

티스토리툴바