Giới thiệu về Action trong wak
Action trong wak là gì ?
- Action là các hàm được sinh ra bằng ActionFilter tạo ra những Object với scope tương tự như HttpRequest, HttpResponse… Ví dụ action.getParameters().get(“ADMIN”) tương tự với request.getParameter(“ADMIN”).
Dùng các Action như thế nào ?
- Action bao gồm những hàm sau:
- void backupLastUrl(): Hàm trả về url trước đó
public void backupLastUrl() { Action.backupLastUrl(this.request); }
- void closeConnection(): Hàm thực hiện đóng connection.
public void closeConnection() throws Exception { if (this.connection == null) { return; } this.connection.close(); this.connection = null; } vd: action.getConnection().closeConnection();
- void commit(): Hàm thực hiện xác nhận thực hiện lệnh.
public void commit() throws Exception { if (this.connection == null) { return; } this.connection.commit(); this.connection.setAutoCommit(false); } vd: action.getConnection().commit();
- String correctDataFilteredTableName(String tableName, String columnName, String dataType, String rightCode): Kiểm tra quyền dữ liệu.
- tableName: Tên bảng dữ liệu
- columeName: Tên cột dữ liệu
- dataType: Kiểu dữ liệu
- rightCode:
public String correctDataFilteredTableName(String tableName, String columnName, String dataType, String rightCode) throws Exception { String condition = this.getDataPermissionSql(dataType, rightCode); condition = StringUtil.replaceAll((String) condition, (String) "$ColumnName$", (String) columnName); String alias = tableName; int index = tableName.indexOf(64); if (index >= 0) { alias = alias.substring(0, index); } if ((index = tableName.lastIndexOf(46)) >= 0 && index < alias.length() - 1) { alias = alias.substring(index + 1); } return "(SELECT * FROM " + tableName + " WHERE " + condition + ") " + alias; }
- ScriptEngine createInterpreter()
public ScriptEngine createInterpreter() throws Exception { if (this.interpreter == null) { ScriptEngineManager manager = new ScriptEngineManager(); this.interpreter = manager.getEngineByExtension("js"); this.interpreter.put("action", this); this.interpreter.put("config", (Object) this.getConfig()); this.interpreter.put("dictionary", (Object) this.getDictionary()); } return this.interpreter; }
- void destroy(): Hàm ngắt kết nối tới database
public void destroy() { Database.closeObject((Connection)this.connection); this.connection = null; }
- String getActionPath():
public String getActionPath() { String actionPath = this.getKey(); if (actionPath.endsWith("/")) { actionPath = actionPath.substring(0, actionPath.length() - 1); } if (actionPath != null && !actionPath.isEmpty() && !actionPath.startsWith("/")) { actionPath = "/" + actionPath; } return actionPath; }
- void getApplicationId(): Là giá trị tự sinh ra khi cài đặt ứng dụng wak. Khi gọi tới hàm sẽ trả về mã duy nhất là ứng dụng wak.
public String getApplicationId() throws Exception { return AdmHelper.getInstance().getApplicationId(); } vd: Combo==DATA_TYPE_ID Extra==!"onchange=\\"fs_refresh(" + action.getId() + ");\\"" Item==SQL Value==!"SELECT DATA_TYPE_ID,NAME FROM ADM_DATA_TYPE WHERE APP_ID=" + action.getApplicationId() + " ORDER BY NAME"; AddNullValue LiveValidation Presence
- List<String> getChildValueList(DictionaryNode nd)
public List<String> getChildValueList(DictionaryNode nd) throws Exception { List values = nd.getChildValueList(); if (values == null || values.isEmpty()) { return values; } LinkedList<String> result = new LinkedList<String>(); for (String value : values) { result.add(value.startsWith("!") ? String.valueOf(this.interpret(value.substring(1))) : value); } return result; }
- Connection getConnection(): Hàm trả về một kết nối.
public Connection getConnection() throws Exception { if (this.connection == null) { String dataSourceName = this.getConfig().getString("DataSource"); DataSourceManager dsm = DataSourceManager.getInstance(); DataSource ds = dataSourceName == null || dataSourceName.isEmpty() ? dsm.getDataSource() : dsm.getDataSource(dataSourceName); this.connection = ds.getConnection(); this.connection.setAutoCommit(false); } return this.connection; }
- String getContextPath(): Hàm trả về phần gốc của url
public String getContextPath() { String contextPath = this.request.getContextPath(); if (contextPath.endsWith("/")) { contextPath = contextPath.substring(0, contextPath.length() - 1); } return contextPath; } vd: http://.../com/ftl/ttksnn/industry_information/list.jsp String path= action.getContextPath() >> "/com/ftl/ttksnn/industry_information"
- String getDataPermissionSql(String dataType, String rightCode) : Kiểm tra quyền dữ liệu
public String getDataPermissionSql(String dataType, String rightCode) throws Exception { HttpSession session = this.request.getSession(); String userId = (String) session.getAttribute("userId"); int userIdValue = -1; if (userId != null && !userId.isEmpty()) { userIdValue = Integer.valueOf(userId); } List associatedGroups = (List) session.getAttribute("associatedGroups"); return AdmHelper.getInstance().getDataPermissionSql(userIdValue, associatedGroups, dataType, rightCode); }
- Dictionary getDictionary(): Hàm xử lý trả về giá trị trong file cấu hình Dictionary.
public static Dictionary getDictionary(String key) { Dictionary dic = dictionaryMap.get(key); if (dic == null) { dic = new Dictionary(); } return dic; } vd: action.getDictionary().get("EXCEL_FORMAT") , 'EXCEL_FORMAT' là trường được thiết lập để gọi một câu thông báo bên file Dictionary.
- Dictionary getErrorDictionary(): Hàm trả về giá trị trong file cấu hình Dictionary khi gặp lỗi.
public Dictionary getErrorDictionary() { Dictionary errorDic = ErrorDictionary.getDictionary((String)this.getLanguage().getCode()); if (errorDic == null) { errorDic = new Dictionary(); } return errorDic; }
- Dictionary getConfig(): Hàm trả về cấu hình
public Dictionary getConfig() { if (this.config == null) { String key = this.getKey(); this.config = this.getCachedDictionary(key, true); } return this.config; }
- Map<String,Object> getParameters(): Hàm trả về giá trị dữ liệu request
public Map<String, Object> getParameters() throws Exception { return this.getRequest().getParameterMap(); } ví dụ trong WAK dùng action.getParameters().get(“ADMIN”) sẽ thay cho request.getParameter(“ADMIN”)