diff --git a/src/main/java/tech/ailef/dbadmin/external/annotations/DisableExport.java b/src/main/java/tech/ailef/dbadmin/external/annotations/DisableExport.java
new file mode 100644
index 0000000..0588b2f
--- /dev/null
+++ b/src/main/java/tech/ailef/dbadmin/external/annotations/DisableExport.java
@@ -0,0 +1,33 @@
+/*
+ * Spring Boot Database Admin - An automatically generated CRUD admin UI for Spring Boot apps
+ * Copyright (C) 2023 Ailef (http://ailef.tech)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+
+package tech.ailef.dbadmin.external.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Disables delete actions on the Entity class.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface DisableExport {
+}
\ No newline at end of file
diff --git a/src/main/java/tech/ailef/dbadmin/external/controller/DataExportController.java b/src/main/java/tech/ailef/dbadmin/external/controller/DataExportController.java
index b01bd24..3900d94 100644
--- a/src/main/java/tech/ailef/dbadmin/external/controller/DataExportController.java
+++ b/src/main/java/tech/ailef/dbadmin/external/controller/DataExportController.java
@@ -61,6 +61,11 @@ public class DataExportController {
if (raw == null) raw = false;
DbObjectSchema schema = dbAdmin.findSchemaByClassName(className);
+
+ if (!schema.isExportEnabled()) {
+ throw new DbAdminException("Export is not enabled for this table: " + schema.getTableName());
+ }
+
List fieldsToInclude = otherParams.getOrDefault("fields[]", new ArrayList<>());
DataExportFormat exportFormat = null;
diff --git a/src/main/java/tech/ailef/dbadmin/external/controller/GlobalController.java b/src/main/java/tech/ailef/dbadmin/external/controller/GlobalController.java
index 2cf2cb1..33fcb6c 100644
--- a/src/main/java/tech/ailef/dbadmin/external/controller/GlobalController.java
+++ b/src/main/java/tech/ailef/dbadmin/external/controller/GlobalController.java
@@ -31,6 +31,7 @@ import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import tech.ailef.dbadmin.external.DbAdmin;
import tech.ailef.dbadmin.external.DbAdminProperties;
+import tech.ailef.dbadmin.external.exceptions.DbAdminException;
import tech.ailef.dbadmin.external.exceptions.DbAdminNotFoundException;
import tech.ailef.dbadmin.internal.UserConfiguration;
@@ -50,6 +51,17 @@ public class GlobalController {
@Autowired
private DbAdmin dbAdmin;
+ @ExceptionHandler(DbAdminException.class)
+ public String handleException(Exception e, Model model, HttpServletResponse response) {
+ model.addAttribute("status", "");
+ model.addAttribute("error", "Error");
+ model.addAttribute("message", e.getMessage());
+ model.addAttribute("dbadmin_userConf", userConf);
+ model.addAttribute("dbadmin_baseUrl", getBaseUrl());
+ model.addAttribute("dbadmin_version", dbAdmin.getVersion());
+ return "other/error";
+ }
+
@ExceptionHandler(DbAdminNotFoundException.class)
public String handleNotFound(Exception e, Model model, HttpServletResponse response) {
model.addAttribute("status", "404");
diff --git a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbObjectSchema.java b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbObjectSchema.java
index 159fa80..5fedc7d 100644
--- a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbObjectSchema.java
+++ b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbObjectSchema.java
@@ -44,6 +44,7 @@ import tech.ailef.dbadmin.external.annotations.ComputedColumn;
import tech.ailef.dbadmin.external.annotations.DisableCreate;
import tech.ailef.dbadmin.external.annotations.DisableDelete;
import tech.ailef.dbadmin.external.annotations.DisableEdit;
+import tech.ailef.dbadmin.external.annotations.DisableExport;
import tech.ailef.dbadmin.external.annotations.HiddenColumn;
import tech.ailef.dbadmin.external.dto.MappingError;
import tech.ailef.dbadmin.external.exceptions.DbAdminException;
@@ -353,6 +354,10 @@ public class DbObjectSchema {
return entityClass.getAnnotation(DisableCreate.class) == null;
}
+ public boolean isExportEnabled() {
+ return entityClass.getAnnotation(DisableExport.class) == null;
+ }
+
/**
* Returns all the data in this schema, as `DbObject`s
* @return
diff --git a/src/main/resources/templates/model/list.html b/src/main/resources/templates/model/list.html
index fdc8e4b..bbe9d94 100644
--- a/src/main/resources/templates/model/list.html
+++ b/src/main/resources/templates/model/list.html
@@ -151,7 +151,8 @@
[[ ${schema.getTableName()} ]]
-