`
shinfocom
  • 浏览: 1242423 次
文章分类
社区版块
存档分类
最新评论

【JSF心得】JAVA的对象传递是引用传递

 
阅读更多

基于jsf-component的portlet的构建通常需要了解一下几点
1. 所有的jsf-component都是单一实例的,也就是说在每一个session周期内,一个UI组件只存在一个实例
2 对于UI组件中的变量,对于不属于UI组件的对象(FTPClient),在UI对象构建初期通过构造函数传递,之后,无论这些对象在其他地方发生任何变化,UI中引用的仍然是该对象的实例。对于UI组件自己的对象(UIStringInput),如果用setXX方法对其赋值了,UI对象在encode的时候,引用的也是该对象的当前值。

public class UIFileForm extends UISimpleForm {
static final public String SAVE_ACTION = "save";
static final public String CANCEL_ACTION = "cancel";

private FTPFile ftpFile_;
private FTPClient ftpClient_;
private UIStringInput nameInput_;
private String fileName_;

public UIFileForm(FTPClient ftp,ResourceBundle res) throws Exception {
super("fileForm", "post", null);
setId("UIFileForm");
setClazz("UIFileForm");
ftpClient_ = ftp; //引用外部对象

int idx = ftpFile_.getName().lastIndexOf("/");
String fileName = ftpFile_.getName().substring(idx++);
nameInput_ = new UIStringInput("name", fileName);

add(
new HeaderRow().add(
new Cell(res.getString("header.edit-file")).addColspan("2")));
add(
new Row().add(new LabelCell(res.getString("label.file-name"))).add(
new ComponentCell(this, nameInput_))); //尽管这里是在构造函数里面,但是nameInput是对象,所有即使它的值变化了,encode的时候仍然得到的是变化后的值
add(
new Row().add(
new ListComponentCell()
.add(
new FormButton(
res.getString("button.save"),
SAVE_ACTION))
.add(
new FormButton(
res.getString("button.cancel"),
CANCEL_ACTION))
.addColspan("2")
.addAlign("center")));

addActionListener(SaveActionListener.class, SAVE_ACTION);
addActionListener(CancelActionListener.class, CANCEL_ACTION);
}
public void setFileName(String s) {
fileName_ = s;
int idx = ftpFile_.getName().lastIndexOf("/");
String fileName = ftpFile_.getName().substring(idx++);
nameInput_.setText(fileName);// 这里是重新改变值的地方

}

分享到:
评论

相关推荐

    java学习心得4000字.doc

    ### Java学习心得与技巧 #### 一、Java学习初期的心理变化与应对策略 在学习Java的过程中,初学者往往会经历一系列心理变化,从最初的兴奋到中间的困惑甚至迷茫,再到最终的理解与掌握。这一过程可以被形象地概括...

    JavaEE学习心得与总结.docx

    而JMS(Java Message Service)则提供了消息传递机制,使得异步通信成为可能。 JavaEE的框架部分,如JSF(JavaServer Faces)、EJB(Enterprise JavaBeans)和JPA(Java Persistence API)是其核心。JSF是一种用于...

    JavaEE学习心得与总结 (2).docx

    通过学习Java EE,我们可以掌握从基础服务到高级框架的各种技术,包括Java Web开发、Web Service、JSF、EJB和JPA等。 基础服务部分是Java EE学习的起点,它涵盖了诸如JNDI(Java Naming and Directory Interface)...

    ejb 学习笔记6

    JMS(Java Message Service)用于实现消息传递;JNDI(Java Naming and Directory Interface)用于查找命名和服务定位。 #### 五、J2EE技术栈 Java EE技术栈非常广泛,涵盖了众多技术和标准,包括但不限于: - **...

    J2EE5 API帮助文档

    - **JMS**(Java Message Service):一种消息传递机制,用于分布式系统之间的通信。 ### 如何使用J2EE5 API文档 对于开发者而言,熟悉并熟练使用J2EE5 API文档是非常重要的。以下是一些建议: 1. **深入学习基础...

Global site tag (gtag.js) - Google Analytics