본문 바로가기

프레임워크/Struts2

struts2 ajax테스트(submit) : 한글문제가 있음..

이것저것 해보다가 결국 해결하긴 했지만..
한글이 걸리는구나..;;

테스트환경 : struts2-2.1.6, tomcat5.5
파일인코딩 및 struts2인코딩 : EUC-KR(UTF-8로도 해보았지만 결과는 같았음..)

1. testRegister2.jsp(첫실행파일)
<%@ page language="java" contentType="text/html; charset=EUC-KR"  pageEncoding="EUC-KR"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
<sx:head />
</head>
<body>

<s:url id="url" value="testRegister.action" />

<s:form id="form1" method="post">
id : <s:textfield name="testDto.id"/><br>
name : <s:textfield name="testDto.name"/><br>
age : <s:textfield name="testDto.age"/><br>
sex : <s:textfield name="testDto.sex"/><br>
<s:checkbox name="testDto.ck" fieldValue="사과" value="1"/>사과
<s:checkbox name="testDto.ck" fieldValue="배"/>배
<s:checkbox name="testDto.ck" fieldValue="딸기"/>딸기
<s:checkbox name="testDto.ck" fieldValue="바나나"/>바나나
<br><s:submit value="Make Request" id="submit"/>
<sx:bind targets="output2" formId="form1" sources="submit" events="onclick" href="%{#url}" />
</s:form>
<br>
<br>
<div id="output2">
</div>
</body>
</html>

2. testRegister3.jsp(결과가 담긴 페이지)
<%@ page language="java" contentType="text/html; charset=EUC-KR"  pageEncoding="EUC-KR"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
id : <s:property value="testDto.id"/><br>
name : <s:property value="testDto.name"/><br>
age : <s:property value="testDto.age"/><br>
sex : <s:property value="testDto.sex"/><br>
ck : <s:property value="testDto.ck"/>

3. TestRegister.java(action 클래스)
package test;

public class TestRegister {
 private TestDTO testDto;
 
 public String execute() throws Exception{
  for(int i = 0; i < testDto.getCk().length; i++){
   System.out.println(i + " : " + testDto.getCk()[i]);
  }
  
  return "success";
 }

 public TestDTO getTestDto() {
  return testDto;
 }

 public void setTestDto(TestDTO testDto) {
  this.testDto = testDto;
 }
}

4. TestDTO.java(model)
package test;

public class TestDTO {
 private String id;
 private String name;
 private int age;
 private String sex;
 private String[] ck;
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 }
 public String[] getCk() {
  return ck;
 }
 public void setCk(String[] ck) {
  this.ck = ck;
 }
}

6. struts.xml
<action name="testRegister" class="test.TestRegister">
    <interceptor-ref name="basicStack"/>
    <result>/testRegister3.jsp</result>
</action>


testRegister2.jsp를 실행하고 값을 입력하고 submit를 누르면...


이렇게 나온다....한글이 깨지긴 하지만 비동기식 submit에 대한 테스트는 대성공이었다..

한글은 파이어폭스로 쭉 살펴봤는데 값이 넘어갈때부터 저게 그대로 찍힌다.
이유는 잘 모르겠다..


참고자료 : http://struts.apache.org/2.1.6/docs/ajax-and-javascript-recipes.html#AjaxandJavaScriptRecipes-Common


----------------------------------------------------------------------------------------------------
한글문제를 해결했음....

UTF-8이 정답이었고...톰캣과 스트럿츠2의 인코딩 및 파일을 저장할때의 인코딩형식을 모두 맞춘 후에야 제대로 동작했다..

드디어 테스트 종료~