Skip to content

Struts 7 마이그레이션 #11

@fp024

Description

@fp024

Struts 2 7.0.x 부터는 Jakarta Servlet 6을 지원해서, 그것에 맞게 바꿔보자!

💡 저자님 커밋 메시지를 보면 Struts2 7.0 업그레이드라고 하진 않고,
Struts 7 Migration이라고 하시는데, 나도 그렇게 하는게 나을 것 같다.

브랜치를 만들어서 조금씩 바꿔보고 있는데, 특이사항도 좀 적어보자!

라이브러리 버전업

부모 POM을 거의 최신으로 바꿨다, 그다지 어려운 일은 아님...

JUnit 5 커스텀 플러그인 수정

Struts 2 7.x 버전 부터는 왠지 JUnit Jupiter를 지원해주지 않을까? 했는데... 여전히 Junit 4만 지원한다.

그래서 JUnit 5커스텀 플러그인 수정한 내용을 Struts 7.0.x버전에 맞게 수정을 하는데,

getActionProxy()와 getValueFromStack() 테스트가 실패를 했다.

  @Test
  void getValueFromStack() throws ServletException, UnsupportedEncodingException {
    request.setParameter("name", "FD");
    executeAction("/test/testAction.action");
    String name = (String) findValueAfterExecute("name");
    assertEquals("FD", name);
  }

request에 파라미터로 설정한 동일한 이름의 setter가 액션에 있으면 값전달이 제대로 되야하는데...
왜 안될까 했는데, JUnitTestAction의 수정사항을 보니...

  @StrutsParameter
  public void setName(String name) {
    this.name = name;
  }

Setter에 @StrutsParameter어노테이션이 붙어있었다. 이것을 적용하고나니 잘되었다. 😂

  • ✨ requset 파라미터 값으로 액션의 Setter를 호출해야할 때.. @StrutsParameter를 써줄 것.

하위 예제 수정

annotations

액션의 도메인 객체 필드에 파라미터를 설정하려면.. Getter에다 @StrutsParameter를 설정해줘야했다.

 @StrutsParameter(depth = 1)
  public Person getPersonBean() {
    return personBean;
  }

Person 내부의 1단계 getter를 한번 호출하므로
depth가 기본값이 0이여서 1이상으로 바꿔줄 필요도 있었다.

저자님께서 하신거보면 그냥 쿨하게 10 지정하심..😅

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions