今天解决了CMS里面的一个问题:
问题描述:
在发布模板的模块里面,当我点击这个模板里面的一个文件夹时有一个文件列出来,然后我点击它就可以弹出这个文件里面的内容同时它下面有对这个文件的"Publish" "Edit" "Download" "Close" "Delete" 这些功能的按钮,只是这个时候对这个文件的操作是readonly="true"只能看不能改,然后当我点击"Edit"的时候就可以对它修改,但是当我修改后我并没有保存起来,只是点了"Cancel"按钮,这个时候我再点击"Edit"按钮,它出现的不是原来的那份而是我刚改的没有保存的那份,所以很苦恼,这就是我今天要完成的内容。
解决办法:(1)首先想下:
<rich:panel style="height: 330px;" id="fileInf">
<h:inputTextarea value="#{webSiteTemplate.selectFile.content}" id="fileText" style="width:100%;height:300px;background-color:gray;" readonly="true" />
<input value="#{webSiteTemplate.selectFile.relativePath}" id="filePath" style="display:none;" />
</rich:panel>
这个是最初的那个readonly="true"的。
(2)
<rich:panel style="height: 330px;" id="editInf">
<h:inputTextarea value="#{webSiteTemplate.selectFile.content}" id="editText" style="width:100%;height:300px;"/>
</rich:panel>
这个是"Edit"的显示的。
(3)分析下:当页面第一次加载的时候,其实这些值就已经加载出来了,只是当时有style="display: none;没有显示而已,所以当编辑之后它不会重新去加载value="#{webSiteTemplate.selectFile.content}" 这个值,现在想办法让它重新再加载一次。
解决办法一、(1)这个是我最初想到的办法:用JS的方式。
<a:commandButton value="Edit" onclick="openEdit();" 在原来的JS的openEdit()里面加代码,加上
document.getElementById('editInf:editText').setValue = #{webSiteTemplate.selectFile.content} ;
这种方式的思路是正确的,但是执行就会报错的,因为JS要挑用后台的业务逻辑的代码,这种方式是不对的。
解决办法二、
(1)如何在seam中用JS来调用后台方法:
思路:添加action方法让点击"Edit"的时候调用后台方法,然后在显示的时候再调用一次。
<a:commandButton value="Edit" onclick="openEdit();" action="#{webSiteTemplate.openEdit()}" reRender="editInf"></a:commandButton>
(2)
private String contentTemp;
public String getContentTemp() {
return contentTemp;
}
public void setContentTemp(String contentTemp) {
this.contentTemp = contentTemp;
}
public void openEdit(){
this.contentTemp = this.selectFile.getContent();
}
(3)在Edit之后的那个编辑里面这样写:
<rich:panel style="height: 330px;" id="editInf">
<h:inputTextarea value="#{webSiteTemplate.contentTemp}" id="editText" style="width:100%;height:300px;"/>
</rich:panel>
它原来是这样的:这时候页面加载一次它就是死的了,不能在动了,所以要写的活些才能满足需要。
<rich:panel style="height: 330px;" id="editInf">
<h:inputTextarea value="#{webSiteTemplate.selectFile.content}" id="editText" style="width:100%;height:300px;"/>
</rich:panel>
这里有个很重要的代码:就是当点击"Edit"之后如何要求上面的这个h:inputTextarea这个区域重新刷新一次,这里就用到了 reRender="editInf" 相当于重新刷新了一次。
这样代码就可以满足需求了。
分享到:
相关推荐
在C++中实现Seam Carving,通常会用到OpenCV库,这是一个强大的计算机视觉库,提供了丰富的图像处理函数。以下是对Seam Carving实现过程的详细说明: 1. **读取图像**:首先,我们需要使用OpenCV的`imread`函数读取...
- **工作原理**:此示例利用 SEAM 的页面流功能,根据用户的输入动态跳转不同的页面,实现了游戏逻辑。 ##### 1.6 完整的 Seam 应用程序:宾馆预订范例 - **介绍**:该示例展示了一个完整的宾馆预订系统的实现过程...
Seam的主要目标是减少开发中的样板代码,提高生产力,同时保持灵活性和可扩展性。 **二、Seam核心概念** 1. **组件(Components)**: Seam的核心是组件模型,它允许开发者定义和管理应用中的对象。组件可以是简单的...
在实际编程中,Seam Carving 的代码实现涉及以下几个关键步骤: 1. **能量图计算**: 根据选定的能量函数计算每个像素的能量值。 2. **拉链查找**: 使用优先队列或A*搜索算法找到最低能量路径。 3. **像素操作**: ...
在"Seam Carving技术的Matlab代码实现"中,我们可以预期找到以下几个关键部分: 1. **能量图计算**:Seam Carving的核心在于计算图像的能量图,这通常基于梯度或其它图像特征。能量图表示每个像素的重要性,低能量...
《JSF标签》简体中文版.pdf涵盖了JSF的各种组件、转换器、验证器以及与后台数据交互的方法,有助于提升开发者在JSF项目中的效率。 **4. A4J (Ajax for JSF)** A4J 是一个扩展JSF的库,提供了一套AJAX支持,允许...
在Seam中,这可能涉及到使用Seam的导航规则和事件驱动的页面管理,帮助开发者实现动态和灵活的Web界面。 4. **security**:这部分源码可能展示了Seam的安全特性,如身份验证、授权和会话管理。Seam集成了Spring ...
7. **国际化与本地化**:Seam支持多语言环境,对于中英文双语版本的书籍,这为开发者提供了跨越语言障碍的便利,帮助全球的开发者理解和使用Seam框架。 8. **测试支持**:Seam提供了一套完整的测试工具,包括单元...
- 解释了如何在Seam中实现推送式的服务模式。 ##### 1.11 在JBoss中用JSF1.2RI运行Seam的范例 - **环境搭建**: - 介绍了如何在JBoss AS和JSF1.2 RI环境中部署和运行Seam应用。 #### 二、使用Seam-gen起步 - **...
- **理解代码**:解释了一个使用Seam页面流技术实现的简单猜数字游戏。 - **工作原理**:页面流是Seam中一种重要的概念,它使得应用程序能够更好地控制页面之间的导航顺序和逻辑。 ##### 2.5 完整的Seam应用:酒店...
- **工作原理**:深入探讨了示例中使用的 Seam 特性,如事件处理机制和页面流。 ##### 1.4 Seam 和 jBPM:待办事项列表示例 - **代码理解**:展示了如何集成 Seam 和 jBPM 这两个框架,实现一个简单的待办事项列表...
在Seam中,我们可以利用EL(Expression Language)表达式将Java后台的数据绑定到JSF视图。例如,`<f:selectItems value="#{countryManager.countries}" />`将后台的国家列表渲染为菜单选项。当用户在菜单中选择一个...
采用c++实现seam carving论文中的全部功能:包括图片的缩小、放大、目标的移除、保护等。其中分为两个程序,其中一个是做的图片的缩小放大,命名为one;另外一个程序为目标的移除和保护,命名为two。均是基于c++实现...
在Seam中,对话范围允许在多个页面之间共享数据,直到对话结束。 - `<s:property>`: 在JSF视图中,这个标签用于显示由Seam管理的组件的属性值。 - `<s:form>`: 是Seam提供的增强版的JSF表单标签,它可以自动处理...
seam下一代web开发框架
- **组件**:是Seam中的基本构建单元,可以是任何可重用的UI或业务逻辑单元,支持属性、方法和事件的绑定。 ### 集成与扩展 Seam2.0不仅与Java EE紧密集成,还支持与各种第三方技术和服务的无缝连接,例如: - **...
1. **环境准备**:确保你的开发环境中已经安装了Java JDK、Eclipse IDE(或其他支持Seam的IDE)、JBoss AS(或WildFly,因为Seam是基于JBoss的应用服务器)以及Seam工具集,如Seam Gen或Maven插件。 2. **新建项目*...
参考Seam Carving for Content-Aware Image Resizing论文实现代码。 对应blog:http://blog.csdn.net/u011630458/article/details/54171081