From 9f72ff5a483d141107d4c722e41031b46e68c900 Mon Sep 17 00:00:00 2001 From: liu <362165265@qq.com> Date: Tue, 3 Feb 2026 10:23:00 +0800 Subject: [PATCH] Refactor error handling in FileController and enhance file rendering logic in app.js. Improved error messages and added checks for data structure integrity. Updated connection handling to maintain independent selections for SFTP connections across panels. --- .../manager/controller/FileController.java | 4 +- src/main/resources/static/js/app.js | 75 +++++++++++++------ 2 files changed, 56 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/sftp/manager/controller/FileController.java b/src/main/java/com/sftp/manager/controller/FileController.java index 385cc9f..e15802c 100644 --- a/src/main/java/com/sftp/manager/controller/FileController.java +++ b/src/main/java/com/sftp/manager/controller/FileController.java @@ -55,7 +55,9 @@ public class FileController { return ApiResponse.success("查询成功", files); } catch (Exception e) { - return ApiResponse.error("列出文件失败: " + e.getMessage()); + // SftpService 已抛出带「列出文件失败:」前缀的消息,此处不再重复拼接 + String msg = e.getMessage(); + return ApiResponse.error(msg != null ? msg : "列出文件失败"); } } diff --git a/src/main/resources/static/js/app.js b/src/main/resources/static/js/app.js index d4b5b81..9bf8542 100644 --- a/src/main/resources/static/js/app.js +++ b/src/main/resources/static/js/app.js @@ -117,12 +117,16 @@ function loadFiles(panelId) { }); } -// 渲染文件列表 +// 渲染文件列表(仅当 data 为数组时渲染,避免错误数据结构被当成文件显示) function renderFileList(panelId, files) { const fileList = $(`#${panelId}-file-list`); fileList.empty(); - if (!files || files.length === 0) { + if (!Array.isArray(files)) { + fileList.html('
数据格式错误,请刷新重试
'); + return; + } + if (files.length === 0) { fileList.html('
文件夹为空
'); return; } @@ -439,7 +443,8 @@ function showConnectionStatus(panelId, sessionId) { statusDiv.show(); if (sessionId && activeConnections[sessionId]) { const conn = activeConnections[sessionId]; - updateConnectionStatus(panelId, 'connected', '已连接: ' + (conn.name || sessionId)); + // 仅显示「已连接」,具体连接名由下拉框展示,避免与下拉框重复显示 IP/名称 + updateConnectionStatus(panelId, 'connected', '已连接'); } else { updateConnectionStatus(panelId, 'disconnected', '未连接'); } @@ -465,23 +470,53 @@ function loadActiveConnections() { }); } -// 更新连接下拉框 +// 更新连接下拉框(优先显示连接名或主机,避免暴露 sftp-uuid) +// 重建选项后会恢复当前面板的选中值,保证左右面板可独立选择不同 SFTP 连接 function updateConnectionSelect(panelId) { const select = $(`#${panelId}-connection`); + const currentSessionId = panelState[panelId] && panelState[panelId].sessionId; + select.empty().append(''); $.each(activeConnections, function(sessionId, conn) { - const name = (conn && conn.name) ? conn.name : sessionId; + const name = (conn && (conn.name || conn.host)) ? (conn.name || conn.host) : ('会话 ' + (sessionId || '').substring(0, 13)); select.append('