Slim3でのURLマッピング〜その2

投稿日:

Twitterで @higayasuo さん @bluerabbit777jp さんとお話して、確認してみました。
KeyとPOSTデータについて「asString」「getAttribute」「getParameter」でそれぞれデータ取得

結果画面

やっぱり、AttributeにPOSTデータのみが入って、ParameterにKeyだけが入ってる。
setAttributeでコピーしてたんで、Attributeに全てのデータが入って・・・・あ!

パスつくり直す前・・・POSTデータのみ。ここでsetAttribute、AttributeにPOSTデータが全部コピーされる
パス直してForword・・・このときはsetAttributeしない?先ほどのPOSTデータがAttributeに残ってて、Parameterは今回のGET引数となるKeyが入っている

こう考えると納得だなぁ

確認に使ったソースはこんな感じです

check.jsp


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Checktitle>
head>
<body>
<p>Hello Check !!!p>
<div>
<form method="POST" enctype="multipart/form-data" action="/check/tweet">
<div><h2 class="tweet_do"><span>POSTテストspan>h2>div>
<div><textarea name="maindata" rows="2" cols="10" wrap="on" style="width:635px;height:60px;">textarea>div>
<div>
<input type="hidden" name="url" value="/check" />
<input type="submit" name="createArticle" value="POSTする" class="submit" />
div>
form>
div>
<hr />
key_getattlist_forward
<ol>
<c:forEach var="att" items="${key_getattlist_forward}">
<li>${att}li>
c:forEach>
ol>
<hr />
key_getattlist_include
<ol>
<c:forEach var="inc" items="${key_getattlist_include}">
<li>${inc}li>
c:forEach>
ol>
<hr />
key_getparamlist
<ol>
<c:forEach var="prm" items="${key_getparamlist}">
<li>${prm}li>
c:forEach>
ol>
<hr />
<div>as_key : ${as_key}div>
<div>as_maindata : ${as_maindata}div>
<div>as_url : ${as_url}div>
<hr />
<div>att_key : ${att_key}div>
<div>att_maindata : ${att_maindata}div>
<div>att_url : ${att_url}div>
<hr />
<div>param_key : ${param_key}div>
<div>param_maindata : ${param_maindata}div>
<div>param_url : ${param_url}div>
<hr />
body>
html>


slim3rootPackage.CheckController.java

package jp.tyato.verify.controller;

import org.slim3.controller.Controller;
import org.slim3.controller.Navigation;

public class CheckController extends Controller {

final String KEY_NAME = "key";

@Override
public Navigation run() throws Exception {

try {
requestScope("key_getattlist_forward",
request.getAttribute("javax.servlet.forward.query_string"));
requestScope("key_getattlist_include",
request.getAttribute("javax.servlet.include.query_string"));
requestScope("key_getparamlist",
request.getParameterValues(KEY_NAME));

requestScope("as_key", asString(KEY_NAME));
requestScope("as_maindata", asString("maindata"));
requestScope("as_url", asString("url"));

requestScope("att_key", request.getAttribute(KEY_NAME));
requestScope("att_maindata", request.getAttribute("maindata"));
requestScope("att_url", request.getAttribute("url"));

requestScope("param_key", request.getParameter(KEY_NAME));
requestScope("param_maindeta", request.getParameter("maindata"));
requestScope("param_url", request.getParameter("url"));
} catch (Throwable e) {
e.printStackTrace();
}

return forward("Check.jsp");
}

}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です