तुम कर सकते हो क्या इस तरह एक स्थिर विधि बनाने है यह प्रत्येक कन्स्ट्रक्टर के लिए है, लेकिन TagSupport
के रूप में केवल एक है, यह कोई समस्या नहीं होनी चाहिए। तुम भी एक कदम आगे जाने के लिए और एक सहायक सुपर क्लास जो हमेशा autowiring की गारंटी देता है बना सकते हैं:
public class SpringTagSupport extends TagSupport {
public SpringTagSupport() {
super();
YourHelperClass.autowireAllFor(this);
}
}
बाकी SpringTagSupport
से अपनी कक्षाओं का विस्तार के रूप में के रूप में आसान है।
public abstract class SpringSuportedTag extends SimpleTagSupport{
protected WebApplicationContext _applicationContext;
protected WebApplicationContext getSpringContext(){
PageContext pageContext = (PageContext) getJspContext();
if(_applicationContext==null){
_applicationContext = RequestContextUtils.getWebApplicationContext(
pageContext.getRequest(),
pageContext.getServletContext()
);
initCustomBeans();
}
return _applicationContext;
}
protected abstract void initCustomBeans();
/**
* Deprecated for inserting extra logic. Use {@link #doTagWithSpring()} instead.
*/
@Override
@Deprecated
public void doTag() throws JspException, IOException {
getSpringContext();
doTagWithSpring();
}
abstract void doTagWithSpring() throws JspException, IOException;
}
और उपयोग::
public class SlotTag extends SpringSuportedTag {
// @Resource(name="userDetailHolder")
// not work here
UserDetailHolder userDetail;
private String slotname;
public String getSlotname() {
return slotname;
}
public void setSlotname(String slotname) {
this.slotname = slotname;
}
@Override
void doTagWithSpring() throws JspException, IOException {
PageContext pageContext = (PageContext) getJspContext();
String userDetailCode = pageContext.getAttribute(InitWidgetUserTag.KAY_USERDETAIL, PageContext.PAGE_SCOPE).toString();
userDetail.init(userDetailCode);
String pageID = pageContext.getAttribute(InitWidgetUserTag.KAY_PAGEID, PageContext.PAGE_SCOPE).toString();
getJspContext().getOut().println("<b>slot for user:"+userDetail.getUserId()+"</b>");
}
@Override
protected void initCustomBeans() {
userDetail = (UserDetailHolder) getSpringContext().getBean("userDetailHolder");
}
}
यह काम है
धन्यवाद, आप मेरे सवाल का जवाब दे दिया। – Tom