你在jsp文件里定义自己的内嵌类ground?这样的写法真是闻所未闻。哈哈。
两个jsp文件被server转化为两个临时的class(A.java, B.java), 那么A.ground和B.ground是两个完全不同的class,当然不能转换。你编译下面的代码试试(原理和你的jsp是一样的):
//A.java
class A {
public ground ag;
public class ground {
public String my = "ground";
public ground() {}
}
public A() {
ag = new ground();
ag.my = "a ground";
}
}
//B.java
class B {
public A a;
public ground bg;
public class ground {
public String my = "ground";
public ground() {}
}
public B() {
a.ag.my = "aaground";
bg = (B.ground)a.ag; //or bg = a.ag; 结果是一样的
}
}
after编译:Cannot convert A.ground to B.ground.
正确的做法应该是在一个javabean里面定义ground.
两个jsp文件被server转化为两个临时的class(A.java, B.java), 那么A.ground和B.ground是两个完全不同的class,当然不能转换。你编译下面的代码试试(原理和你的jsp是一样的):
//A.java
class A {
public ground ag;
public class ground {
public String my = "ground";
public ground() {}
}
public A() {
ag = new ground();
ag.my = "a ground";
}
}
//B.java
class B {
public A a;
public ground bg;
public class ground {
public String my = "ground";
public ground() {}
}
public B() {
a.ag.my = "aaground";
bg = (B.ground)a.ag; //or bg = a.ag; 结果是一样的
}
}
after编译:Cannot convert A.ground to B.ground.
正确的做法应该是在一个javabean里面定义ground.
我已经说过了,这个问题关键是定义class ground的地方错了!jsp页面里的任何代码最终会被嵌到一个临时的class里再编译,所以ground分别是两个class里的内嵌类,除了名字相同两者之间没有其他任何联系,不是相当于我在上面所提供的例子的错误吗?
但是实际上两者之间没有任何关系。仅仅名称相同而已。