Farklı ortamlarda aynı war'un çalışması gerekiyordu. Env variable olarak alınabilecek bir parametreyi struts-config üzerinden gönderebilir miyimi düşündüm. custom action-mapping class'ı yazarak bunun yapılabileceğini gördüm.
Yazayım, bir kenarda dursun. Lazım olur. Zaten birkaç basit adımdan oluşuyor.
- önce custom mapping class'ımızı yazalım:
package xxx.yyy;
import org.apache.struts.action.ActionMapping;
public class CustomActionMapping extends ActionMapping {
private String channelInfo;
public String getChannelInfo() {
return channelInfo;
}
public void setChannelInfo(String channelInfo) {
this.channelInfo = channelInfo;
}
}
Bana bir tane parametre gerektiği için şimdilik channelInfo adında tek bir tane parametre ekledim.
- ardından struts-config'de tanımladığım <action-mappings> içindeki action tanımlarına, yukarıda yazmış olduğum custom mapping'i göstereyim:
<action path="/dummyAction"
className="xxx.yyy.CustomActionMapping"
...
- şimdi de custom içindeki ilgili parametreyi struts-config'den istediğim değere set edeyim:
<set-property property="channelInfo" value="CHANNEL1"/>
- son olarak da action içinde bu değeri nasıl okuyacağıma geldim. Bunun için de action class'ına gelen ActionMapping objesini benim custom mapping'ime cast ediyorum. Ve istediğim parametreyi alıyorum.
CustomActionMapping myMapping = (CustomActionMapping) mapping;
String channelInfo = myMapping.getChannelInfo();
Benim çok işime yaradı. Şimdilik action mapping'de ihtiyacım oldu ama eğer lazım olursa <forward> ve <form-bean> implementasyonlarını da customize edebiliyor olmamız da aklımızın bir kenarında bulunsun.
No comments:
Post a Comment