Java 如何在getter方法中找到调用组件?

Java 如何在getter方法中找到调用组件?,java,jsf,Java,Jsf,在我的页面中,我有2个(以及更多)图像容器。我想绑定它们的url属性,以便每个容器根据其id具有不同的源。 我的JSP中有如下内容: 在支持bean代码中,我有一个imgSRCgetter,但是我希望能够在getter中知道它是从哪个组件调用的,并且基于组件的ID,我将使用某种开关来决定返回到组件的URL 这可能吗?如果是这样,怎么做?当您使用4年前被废弃的Woodstock组件库时,我敢打赌您正在维护一个遗留的JSF 1.x应用程序,该应用程序从未升级过以替换死去的Woodstock组件库

在我的页面中,我有2个(以及更多)图像容器。我想绑定它们的url属性,以便每个容器根据其id具有不同的源。 我的JSP中有如下内容:


在支持bean代码中,我有一个
imgSRC
getter,但是我希望能够在getter中知道它是从哪个组件调用的,并且基于组件的ID,我将使用某种
开关来决定返回到组件的URL


这可能吗?如果是这样,怎么做?

当您使用4年前被废弃的Woodstock组件库时,我敢打赌您正在维护一个遗留的JSF 1.x应用程序,该应用程序从未升级过以替换死去的Woodstock组件库。在JSF1.x中没有API提供的方法允许您在getter中获取当前组件

在JSF 2.x中,您可以使用:

public String getImgSRC() {
    UIComponent component = UIComponent.getCurrentComponent(FacesContext.getCurrentInstance());
    // ...
}
但是在JSF1.x中,这种方法不可用。我建议采用不同的方法。如果唯一的目的是消除属性/getter样板代码,那么可以使用
Map
来保存这些值。地图可以像EL中的Javabeans一样处理

大概是这样的:

private static Map<String, String> imageURLs = new HashMap<String, String>();

static {
    imageURLs.put("img1", "foo.png");
    imageURLs.put("img2", "bar.png");
    imageURLs.put("img3", "baz.png");
    // ...
}

public Map<String, String> getImageURLs() {
    return imageURLs;
}
private static Map imageurl=new HashMap();
静止的{
put(“img1”、“foo.png”);
put(“img2”、“bar.png”);
imageURL.put(“img3”、“baz.png”);
// ...
}
公共映射getImageURLs(){
返回图像URL;
}
它可以用作:


...

这不完全是JSP+Servlet。这就是JSF。我已经相应地编辑了标题和标签。你不能用多态性代替按对象类型区分吗?谢谢你的回复。正如我的问题所暗示的,我正在学习一门java课程,所以我使用Woodstock组件库作为NetBeans 6.5 IDE的一部分,该IDE是在我的课程书(Deitel的java)中提供的。我将尝试使用JSF 2.x,因为您的第二个解决方案让我处于与当前相同的位置-每个图像容器都必须使用不同的绑定,而我希望对所有图像使用相同的绑定,并且getter应该根据使用它的组件返回响应。哇,那本书一定已经过时了。对于快速移动的主题,如编程语言和所有与ICT相关的东西,您应该真正寻找不超过1年前出版的书籍。请注意,以这种方式使用
绑定
属性是一种非常糟糕的做法。要开始使用JSF并找到更多最近/体面教程的链接,我建议浏览我们的JSFWiki页面:它们列在底部。顺便说一句,Woodstock上还有一个wiki页面,针对您感兴趣的案例: