下载
开发软件
账户
下载
开发软件
登录
我忘记用户名和密码了
创建帐户
语言
帮助
语言
帮助
×
登录
登录名
密码
×
我忘记用户名和密码了
简体中文翻译状态
类别:
软件
用户
PersonalForge
Magazine
Wiki
搜索
OSDN
>
浏览软件
>
System
>
TERASOLUNA Framework
>
论坛
>
公开讨论
>
ActionFormを経由せずにリクエストパラメータを取得する方法
TERASOLUNA Framework
描述
项目概述
开发人员仪表板
项目的网页
开发人员
Image Gallery
List of RSS Feeds
Activity
统计
历史
下载
List of Releases
统计
源代码
Code Repository list
Subversion
查看仓库
任务单
Ticket List
里程碑列表
Type List
组件列表
List of frequently used tickets/RSS
Submit New Ticket
文档
Wiki
FrontPage
Title index
Recent changes
Doc Mgr
列表文档
沟通
论坛
List of Forums
公开讨论 (1277)
Mailing Lists
list of ML
terasoluna-information
新闻
论坛:
公开讨论
(Thread #20638)
Return to Thread list
RSS
ActionFormを経由せずにリクエストパラメータを取得する方法 (2008-11-20 15:33 by
匿名
#40065)
回复
Create ticket
現在、TERASOLUNA ServerFW Java(Web版)を利用しています。
BLogicクラス内で、ActionFormを経由せずにリクエストパラメータを直接取得(HttpServletRequest#getParameter)したいと考えて、
以下のように記述しました。
[blogic-io.xml]
<action path="/aaa/bbb">
<blogic-params bean-name="aaa.bbb.CCCInputParam">
<set-property property="requestParameter" blogic-property="cccInputParamAttribute" source="request" />
</blogic-params>
<blogic-result>
</blogic-result>
</action>
[BLogicクラス]
public BLogicResult execute(CCCInputParam inputParam) {
String requestParameter = inputParam.getCCCInputParamAttribute();
}
また、struts-config.xmlには、TERASOLUNAがデフォルトで提供するBLogicMapperを利用するように指定しました。
ところが、上記の設定ではリクエストパラメータを取得することができませんでした。
変だと思い、TERASOLUNAがデフォルトで提供するBLogicMapper(jp.terasoluna.fw.service.thin.BLogicMapper)クラスのソースを読んでみたら、
getValueFromRequestメソッド内で、HttpServletRequest#getParameter()ではなく、HttpServletRequest#getAttribute()で値を取得してるようです(129行目)。
TERASOLUNAデフォルトのBLogicMapperを利用した場合には、ActionFormを経由せずにリクエストパラメータを直接取得することはできない仕様なのでしょうか?
もしくは、リクエストパラメータを直接取得したい場合には、自身でBLogicMapperを拡張する必要があるということでしょうか?
ご回答よろしくお願いします。
回复到 #40065
×
主体
Body
Reply To Message #40065 > 現在、TERASOLUNA ServerFW Java(Web版)を利用しています。 > > BLogicクラス内で、ActionFormを経由せずにリクエストパラメータを直接取得(HttpServletRequest#getParameter)したいと考えて、 > 以下のように記述しました。 > > [blogic-io.xml] > <action path="/aaa/bbb"> > <blogic-params bean-name="aaa.bbb.CCCInputParam"> > <set-property property="requestParameter" blogic-property="cccInputParamAttribute" source="request" /> > </blogic-params> > <blogic-result> > </blogic-result> > </action> > > [BLogicクラス] > public BLogicResult execute(CCCInputParam inputParam) { > > String requestParameter = inputParam.getCCCInputParamAttribute(); > } > > また、struts-config.xmlには、TERASOLUNAがデフォルトで提供するBLogicMapperを利用するように指定しました。 > > > ところが、上記の設定ではリクエストパラメータを取得することができませんでした。 > 変だと思い、TERASOLUNAがデフォルトで提供するBLogicMapper(jp.terasoluna.fw.service.thin.BLogicMapper)クラスのソースを読んでみたら、 > getValueFromRequestメソッド内で、HttpServletRequest#getParameter()ではなく、HttpServletRequest#getAttribute()で値を取得してるようです(129行目)。 > > TERASOLUNAデフォルトのBLogicMapperを利用した場合には、ActionFormを経由せずにリクエストパラメータを直接取得することはできない仕様なのでしょうか? > もしくは、リクエストパラメータを直接取得したい場合には、自身でBLogicMapperを拡張する必要があるということでしょうか? > > ご回答よろしくお願いします。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
登录
Nickname
预览
Post
取消
RE: ActionFormを経由せずにリクエストパラメータを取得する方法 (2008-11-20 17:13 by
kimuraku
#40066)
回复
Create ticket
TERASOLUNAでは、原則ActionForm経由でリクエスト値を取得することとなっています。
つまり、BLogicからリクエストパラメータ(req.getParameter)を参照したい場合は、
専用のフィールドをActionFormに定義する必要があります。
例として、一覧表示中の個別リンク押下時にクエリストリングで
パラメータを送信する時などは、通常ActionFormにパラメータと
同名でフィールドを定義することになります。
BLogicMapperを拡張するのも一つの方法ですが、AbstractBLogicActionを拡張して
Action内でreq.getParameterを行い、Inputクラスに直接セットするという
方法も考えられますが、そのような処理が頻繁にあると、その都度Actionを
拡張することになってしまいます。
# ActionFormを経由させたくないのはどういった要件からでしょうか?
# また、どのようなリクエストパラメータを想定していますか?
# 差し支えなければ教えていただきたく存じます。
以上です。
回复到
#40065
回复到 #40066
×
主体
Body
Reply To Message #40066 > TERASOLUNAでは、原則ActionForm経由でリクエスト値を取得することとなっています。 > > つまり、BLogicからリクエストパラメータ(req.getParameter)を参照したい場合は、 > 専用のフィールドをActionFormに定義する必要があります。 > > 例として、一覧表示中の個別リンク押下時にクエリストリングで > パラメータを送信する時などは、通常ActionFormにパラメータと > 同名でフィールドを定義することになります。 > > BLogicMapperを拡張するのも一つの方法ですが、AbstractBLogicActionを拡張して > Action内でreq.getParameterを行い、Inputクラスに直接セットするという > 方法も考えられますが、そのような処理が頻繁にあると、その都度Actionを > 拡張することになってしまいます。 > > # ActionFormを経由させたくないのはどういった要件からでしょうか? > # また、どのようなリクエストパラメータを想定していますか? > # 差し支えなければ教えていただきたく存じます。 > > 以上です。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
登录
Nickname
预览
Post
取消
RE: ActionFormを経由せずにリクエストパラメータを取得する方法 (2008-11-20 17:34 by
匿名
#40067)
回复
Create ticket
> # ActionFormを経由させたくないのはどういった要件からでしょうか?
特にActionFormを経由させたくないという要件(理由)があるわけではありませんので、ご教授頂いた方法で実装します。
ただ、blogic-io.xmlのsource属性に「request」と指定できることから、HttpServletRequest#getParameterでリクエストパラメータを取得できるのではないかと考えただけです
(「request」と指定できるからには、一般的にそのような動作を期待するのではないでしょうか?
逆に、BLogicクラスの中で、HttpServletRequest#getAttributeを利用してリクエストに設定された属性を取得・利用したい場面というのが全く思いつきません)。
> # また、どのようなリクエストパラメータを想定していますか?
「一覧表示画面」→「詳細画面」の遷移で、idをリクエストパラメータとしてurlに付加して送るだけです。
ご回答ありがとうございました。
回复到
#40065
回复到 #40067
×
主体
Body
Reply To Message #40067 > > # ActionFormを経由させたくないのはどういった要件からでしょうか? > > 特にActionFormを経由させたくないという要件(理由)があるわけではありませんので、ご教授頂いた方法で実装します。 > > ただ、blogic-io.xmlのsource属性に「request」と指定できることから、HttpServletRequest#getParameterでリクエストパラメータを取得できるのではないかと考えただけです > > (「request」と指定できるからには、一般的にそのような動作を期待するのではないでしょうか? > 逆に、BLogicクラスの中で、HttpServletRequest#getAttributeを利用してリクエストに設定された属性を取得・利用したい場面というのが全く思いつきません)。 > > > # また、どのようなリクエストパラメータを想定していますか? > > 「一覧表示画面」→「詳細画面」の遷移で、idをリクエストパラメータとしてurlに付加して送るだけです。 > > ご回答ありがとうございました。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
登录
Nickname
预览
Post
取消
RE: ActionFormを経由せずにリクエストパラメータを取得する方法 (2008-11-20 17:49 by
kimuraku
#40068)
回复
Create ticket
Strutsでは、RequestProcessor#processPopulateでリクエストパラメータが
ActionFormに格納されます。
TERASOLUNAではこのStrutsの流儀に倣い、blogic-io.xmlのsource属性で
formを指定することで、req.getParameterの値をActionForm経由で
取得するようになっています。
一方、リクエストのAttributeに格納される値は、サーバ内処理などで
リクエストスコープで扱う値(JSPのカスタムタグでscope="request"と
指定した場合等)なので、そのような値をblogic-io.xmlのsource="request"
で取得できるようになっています。
リクエストスコープ内でのみ利用したいような揮発性の高い値などを
利用する場合にこの方式をご利用下さい。
以上です。
回复到
#40067
回复到 #40068
×
主体
Body
Reply To Message #40068 > Strutsでは、RequestProcessor#processPopulateでリクエストパラメータが > ActionFormに格納されます。 > > TERASOLUNAではこのStrutsの流儀に倣い、blogic-io.xmlのsource属性で > formを指定することで、req.getParameterの値をActionForm経由で > 取得するようになっています。 > > 一方、リクエストのAttributeに格納される値は、サーバ内処理などで > リクエストスコープで扱う値(JSPのカスタムタグでscope="request"と > 指定した場合等)なので、そのような値をblogic-io.xmlのsource="request" > で取得できるようになっています。 > リクエストスコープ内でのみ利用したいような揮発性の高い値などを > 利用する場合にこの方式をご利用下さい。 > > 以上です。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
登录
Nickname
预览
Post
取消