Hi,
One of the main concepts of a bean is that it must have a No-argument
constuctor. The reason for this is obvious if you consider that a bean is supposed
to be a self contained bit of code that a bean box can manipulate like any other
bean. So in order to make sure that all beans behave the same way some conventions
were adopted, ie all methods the retrieve the bean's properies are
public T getP() methods
all methods to set properties are
public setP(T value) methods
In order for all beans to be loaded in the same way (without knowing anthing about
a bean but it's name) it was decided that the default no argument constuctor
(which contains an implicit super() ) should be used.
This said it is possible to have a bean which can take parameters in it's
constuctor as long as you also have a no argument constructor (constuctor
overloading ) but bear in mind if you let generic bean loaders load your bean they
will always use the no-argument default constructor, but you can indeed write a
scriplet in your JSP to instanciate your bean (class).
eg
public class MyBean {
private String name=null;
public MyBean() {
this.setName("World");
}
public MyBean(String name) {
this.setName(name);
}
public String getName() {
return(name);
}
public void setName(String name) {
this.name=name;
}
}
In this case if you use <jsp:useBean ...> the default constuctor will be used. But
if tou use
<% MyBean testBean = new MyBean("Karl") %>
then the other constuctor will be used. The thing is the <jsp:useBean ...> tag is
a generic bean loader and has to have a standard method of launching all beans.
The only thing I can sugest is for you to write your own special tag so your XML
guys don't have to get their hands dirty ;-)
Karl
"Bailey, Jeff A" wrote:
> Hi all,
>
> Was just wondering if there was a way to call a constructor other than the
> default one using <jsp:usebean...>
>
> For example,
>
> // Default constructor
> MyBean() {
> testVal = 0;
> }
>
> // Something different
> MyBean(int i) {
> testVal = i;
> }
>
> I understand I can do something like this:
> <%
> MyBean m = new MyBean(10);
> %>
>
> but is it possible to call the constructor and pass it an argument (the int
> i) while using the <jsp:usebean...>tags instead of using a get and set with
> the default constructor. This is a poor example because setTestVal(int i)
> could be used easily, but for what I am working on, it would be much easier
> to pass arguments to the constructor and also utilize the <jsp:usebean....>
> tags so that our XML guys can work with it without too much instruction.
>
> Thanks for the help
>
> Jeff
>
> ===========================================================================
> To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
> FAQs on JSP can be found at:
> http://java.sun.com/products/jsp/faq.html
> http://www.esperanto.org.nz/jsp/jspfaq.html
===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
FAQs on JSP can be found at:
http://java.sun.com/products/jsp/faq.html
http://www.esperanto.org.nz/jsp/jspfaq.html