在帆软FineReport中,通过自定义按钮实现收藏/取消收藏功能,你可以使用JavaScript来获取当前报表的名称、存储路径以及当前报表的URL。以下是具体的实现方法:
1. 获取当前报表的名称
FineReport提供了全局变量来获取当前报表的名称。通常,你可以使用以下JavaScript代码来获取报表名称:
javascript
复制代码
var reportName = "${reportlet.name}";
2. 获取当前报表的存储路径
FineReport的报表存储路径通常不直接暴露为全局变量,但你可以通过解析报表的URL来间接获取报表路径。不过,获取完整的服务器路径需要一些额外的处理,通常你需要知道服务器的基本URL。
3. 获取当前报表的URL
要获取当前报表的完整URL,你可以使用JavaScript的window.location对象。以下是一个简单的示例:
javascript
复制代码
var currentUrl = window.location.href;
综合示例
假设你有一个自定义按钮,点击该按钮时会触发JavaScript代码,执行收藏/取消收藏功能。以下是一个综合示例:
html
复制代码
<!-- 假设你在FineReport的自定义按钮中嵌入以下HTML和JavaScript代码 -->
<button onclick="toggleFavorite()">
<span id="favoriteStatus">收藏
</button>
<script>
function toggleFavorite() {
// 获取当前报表的名称
var reportName = "${reportlet.name}";
// 获取当前报表的URL
var currentUrl = window.location.href;
// 假设你有一个后端API接口来处理收藏逻辑
// 例如:http://yourserver.com/api/favorite
var apiUrl = "http://yourserver.com/api/favorite";
// 你可以通过Ajax请求来调用后端接口,传递报表名称和URL作为参数
var xhr = new XMLHttpRequest();
xhr.open("POST", apiUrl, true);
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
if (response.success) {
document.getElementById("favoriteStatus").innerText = "已收藏";
} else {
document.getElementById("favoriteStatus").innerText = "收藏";
}
}
};
// 发送请求的数据
var data = JSON.stringify({
reportName: reportName,
reportUrl: currentUrl
});
xhr.send(data);
}
</script>
注意事项
后端接口:上面的示例假设你有一个后端API接口来处理收藏逻辑。你需要根据自己的后端实现来修改API URL和处理逻辑。
权限管理:确保用户有权限进行收藏操作,并在后端进行相应的权限验证。
跨域问题:如果你的FineReport服务器和后端API服务器不在同一个域下,需要注意跨域资源共享(CORS)问题。
通过以上方法,你可以在FineReport中实现自定义按钮的收藏/取消收藏功能,并获取当前报表的名称和URL。