struts.xmlで使用できる属性、要素はここのdtdファイルでわかる。

まずはconstant要素

これはsturts2のデフォルトの設定を上書く際に使用する。
デフォルトの設定はstruts2-core-2.1.xxx.jarのorg/apache/struts2/default.propertiesに書かれている。
デフォルトでは以下の値が定義されている


struts.i18n.encoding=UTF-8
struts.objectFactory.spring.autoWire = name
struts.objectFactory.spring.useClassCache = true
struts.objectFactory.spring.autoWire.alwaysRespect = false
struts.multipart.parser=jakarta
struts.multipart.saveDir=
struts.multipart.maxSize=2097152
struts.action.extension=action,,
struts.serve.static=true
struts.serve.static.browserCache=true
struts.enable.DynamicMethodInvocation = true
struts.enable.SlashesInActionNames = false
struts.tag.altSyntax=true
struts.devMode = false
struts.i18n.reload=false
struts.ui.theme=xhtml
struts.ui.templateDir=template
struts.ui.templateSuffix=ftl
struts.configuration.xml.reload=false
struts.velocity.configfile = velocity.properties
struts.velocity.contexts =
struts.velocity.toolboxlocation=
struts.url.http.port = 80
struts.url.https.port = 443
struts.url.includeParams = none
struts.dispatcher.parametersWorkaround = false
struts.freemarker.templatesCache=false
struts.freemarker.beanwrapperCache=false
struts.freemarker.wrapper.altMap=true
struts.freemarker.mru.max.strong.size=100
struts.xslt.nocache=false
struts.mapper.alwaysSelectFullNamespace=false
struts.ognl.allowStaticMethodAccess=false

開発中のみ、値を変更する(false→ture)可能性が大きいパラメーター
  • struts.configuration.xml.reload:リクエストの度にxmlファイルを読み直す
  • struts.i18n.reload:リクエストの度にリソースファイルを読み直す(※と書いてあるけどファイルの内容を変更しても読み直してくれなかった。なぜ??)
  • struts.devMode:上記2つを1度に設定し、ログも詳細に吐き出される。
    また、jsp上に<s:debug></s:debug>タグを記載すると[debug]というリンクが出現し、クリックするとValueStackに積まれている内容を見ることができる。これは自分が想定していた値がjsp上でとれなかった場合に原因を探る際にすごく便利
開発以降、変更する可能性が大きいパラーメーター
struts.action.extension:デフォルトはstruts.action.extension=action,,となっている(カンマ区切りで空文字もあることに注意)これは、例えばstruts.xml内で<action name="hoge" class="HogeHoge">と定義があった場合、
xxx/hoge.actionまたは、xxx/hogeというURLでHogeHogeクラスが呼び出されることを意味する。なので、デフォルトのactionという拡張子や拡張子なしが嫌な場合は、この値を変更すればよい。

constantタグ以外でのパラメーターの変更方法
struts.xml内でconstantタグを使用して変更する以外に、変更したい値をstruts.propertiesに書き、classpathが通っているフォルダの直下に置くことでも変更することができる。もし、struts.xmlとstruts.properties両方で同じパラメータに対し違う値を設定していたら、struts.propertiesで設定した値が有効になる。

例)struts.xmlでは<constant name="struts.action.extension" value="do,," />、struts.propertiesではstruts.action.extension=cgiと設定した場合、<action name="hoge">のhogeにマッピングされてるクラスに対してはxxx/hoge.cgiでのみアクセスでき、xxx/hoge.doやxxx/hogeではアクセスできない。

0 コメント: