So sánh giữa Odoo và Ezyplatform
So sánh giữa Odoo và Ezyplatform
Lỗi: Tiêu đề trang admin hiển thị "Không biết"
Tôi đang lập trình ezyplatform plugin, trang của tôi hiển thị tiêu đề "Không biết" hoặc "Unknown" là tại vì sao?
<img src="/api/v1/media/a38748e82b77e11837bf8bdfee8b5c50138aa7ad1ae052df89e50393fd659379.png" alt="Screenshot 2025-11-04 at 14.45.53.png">
Cho em hỏi là tại sao em không đăng ký được tài khoản admin ạ, cli.bat "console web" thì nó vẫn lên nhma phía admin thì lại bị như hình ạ
Cho em hỏi là tại sao em không đăng ký được tài khoản admin ạ, cli.bat "console web" thì nó vẫn lên nhma phía admin thì lại không load được css như hình ạ:
<img src="/api/v1/media/5b9b2a19182e560d6afb8f7e4c40e3583a98ac89c04020940543db33bbe1cc20.jpg" alt="z7181348986966_fe32d50879859be46a9f32749a2e093b.jpg">
<img src="/api/v1/media/4d38a97d426bfefbf2e1d78307af36156b65a6335fbb3c46ee8f37931d57ca69.jpg" alt="z7181348986968_c37d0231e2d4c76430cd61ced7320e6b.jpg">
Lỗi: No content to map due to end-of-input
Lỗi <div class="markdown-block position-relative overflow-auto source-java">
<pre>
com.fasterxml.jackson.databind.JsonMappingException: No content to map due to end-of-input
</pre>
</div>Xảy ra khi nào?
Lỗi: Path expected for join!
Vì sao lỗi <code class="markdown-inline">Path expected for join!</code> xảy ra với đoạn query dưới đây:<div class="markdown-block position-relative overflow-auto source-java">
<pre>
"SELECT e FROM UserGroupMember e <span class="pl-s">"</span> +
"INNER JOIN UserGroup a ON e.userGroupId = a.id <span class="pl-s">"</span> +
"INNER JOIN EzyCRMEventUserGroup b ON a.id = b.userGroupId <span class="pl-s">"</span> +
"INNERJOIN EzyCRMEvent c ON b.eventId = c.id <span class="pl-s">"</span> +
"INNER JOIN DataMapping d ON c.id = d.toDataId <span class="pl-s">"</span> +
"INNER JOIN EzyCRMUserGroup f ON d.fromDataId = f.id <span class="pl-s">"</span> +
"INNER JOIN EzyCRMEventUserGroup g ON f.id = g.userGroupId <span class="pl-s">"</span> +
"WHERE e.userId IN ?1 <span class="pl-s">"</span> +
"AND a.groupType = <span class="pl-s">'MATCH'</span> <span class="pl-s">"</span> +
"AND a.status = ?2 <span class="pl-s">"</span> +
"AND c.eventType = <span class="pl-s">'ROUND'</span> <span class="pl-s">"</span> +
"AND d.mappingName = <span class="pl-s">'player_group_round'</span> <span class="pl-s">"</span> +
"AND f.groupType = <span class="pl-s">'AGE_GROUP'</span> <span class="pl-s">"</span> +
"AND g.eventId = ?0 <span class="pl-s">"</span> +
"ORDER BY e.id DESC"
</pre>
</div><p>
Lỗi:
</p>
<div class="markdown-block position-relative overflow-auto source-java">
<pre>
Path expected <span class="pl-k">for</span> join! [SELECT e FROM org.youngmonkeys.ezycrm.entity.UserGroupMember e INNER JOIN org.youngmonkeys.ezycrm.entity.UserGroup a ON e.userGroupId = a.id INNER JOIN org.youngmonkeys.ezycrm.entity.EzyCRMEventUserGroup b ON a.id = b.userGroupId INNER JOIN org.youngmonkeys.ezycrm.entity.EzyCRMEvent c ON b.eventId = c.id INNER JOIN org.youngmonkeys.ezyplatform.entity.DataMapping d ON c.id = d.toDataId INNER JOIN EzyCRMUserGroup f ON d.fromDataId = f.id INNER JOIN org.youngmonkeys.ezycrm.entity.EzyCRMEventUserGroup g ON f.id = g.userGroupId WHERE e.userId IN ?1 AND a.groupType = <span class="pl-s">'MATCH'</span> AND a.status = ?2 AND c.eventType = <span class="pl-s">'ROUND'</span> AND d.mappingName = <span class="pl-s">'player_group_round'</span> AND f.groupType = <span class="pl-s">'AGE_GROUP'</span> AND g.eventId = ?0 ORDER BY e.id DESC]
</pre>
</div>
Ví dụ về lắng nghe sự kiện upload file của EzyPlatform
Ví dụ về lắng nghe sự kiện upload file của EzyPlatform
Cấu trúc dự án
Cho em hỏi trong 1 dự án Spring boot. Thì sẽ Controller -> Service -> Repo<p>
Vậy trong Service luôn gọi qua Service khác. hay gọi qua repo khác thì ổn hơn ạ.
</p>
<p>
Ví dụ: Service A có repo A, service B, repo C, D.. vì chỉ gọi những câu jpa đơn giản.
</p>
<p>
Best practice thì sẽ như nào ạ
</p>
Api có gửi file dùng spring boot
Cần truyền xuống thông tin là 1 list Customer gồm: name, type, và 1 danh sách Document gồm documentType và file <p>
public class CustomerInfo {
</p>
<p>
private String customerName;
</p>
<p>
private String customerType;
</p>
<p>
private List<CustomerFileDTO> files;
</p>
<p>
}
</p>
<p>
public class CustomerFileDTO {
</p>
<p>
private String documentType;
</p>
<p>
private MultipartFile file;
</p>
<p>
}
</p>
<p>
Cách nào là tối ưu nhất để xử lý đưa list customer này xuống và lấy được file vậy ạ. Cho e xin cách truyền request xuống dễ xử lý với ạ. list customer này max size =5 vì nó đẩy xuống để lưu thông tin của 1 phiếu xử lý
</p>
Ví dụ về combobox sử dụng jquery-ui
Ví dụ về combobox sử dụng jquery-ui
Gửi Nhận Cookie Từ Backend Và Frontend Khác Domain
Xin chào mọi người, hiện tại em làm một project cá nhân chạy trên localhost với spring và html thuần. Ở phía backend(port:8080) và frontend(port:8085) và cả 2 em đều đã cấu hình chạy trên https (<a href="https://localhost). " target="_blank">https://localhost). </a> Em có case như sau, khi thực hiện login từ backend em có set cookie như thế này:<div class="markdown-block position-relative overflow-auto source-java">
<pre>
private <span class="pl-k">void</span> setTokenCookie(String tokenType, String token, <span class="pl-k">long</span> ttl, HttpServletResponse servletResponse) {
<span class="pl-k">if</span> (servletResponse == null) {
<span class="pl-k">throw</span> <span class="pl-k">new</span> AppException(ErrorCode.INTERNAL_SERVER_ERROR, "HttpServletResponse is null");
}
ResponseCookie tokenCookie = ResponseCookie.from(tokenType, token)
.httpOnly(true)
.secure(true)
.path(<span class="pl-s">"/"</span>)
.maxAge(Duration.ofSeconds(ttl))
.sameSite(<span class="pl-s">"None"</span>)
.build();
servletResponse.addHeader(<span class="pl-s">"Set-Cookie"</span>, tokenCookie.toString());
}
</pre>
</div>- Tiếp theo khi thực hiện logout:<div class="markdown-block position-relative overflow-auto source-html">
<pre>
const response = await fetch(logoutApiUrl, {
method: <span class="pl-s">"POST"</span>,
credentials: <span class="pl-s">"include"</span>,
headers: {
<span class="pl-s">"Content-Type"</span>: <span class="pl-s">"application/json"</span>,
Authorization: `Bearer ${localStorage.getItem("accessToken")}`,
},
});
</pre>
</div><div class="markdown-block position-relative overflow-auto source-java">
<pre>
private String extractTokenFromCookie(HttpServletRequest request, String cookieName) {
<span class="pl-k">if</span> (request.getCookies() == null) {
<span class="pl-k">throw</span> ExceptionUtils.appException(ErrorCode.UNAUTHORIZED, "Cannot find cookies in request header or cookie <span class="pl-s">"</span> + (cookieName.equals(TokenType.ACCESS_TOKEN) ? "access token" : "refresh token"));
}
<span class="pl-k">for</span> (Cookie cookie : request.getCookies()) {
System.out.println(cookie.getName());
<span class="pl-k">if</span> (cookieName.equals(cookie.getName())) {
<span class="pl-k">return</span> cookie.getValue();
}
}
<span class="pl-k">throw</span> ExceptionUtils.appException(ErrorCode.UNAUTHORIZED, "Cannot find cookie with name: %s", cookieName);
}
</pre>
</div>- API logout ở backend có gọi đến extractTokenFromCookie để lấy refresh token, em debug thì request.getCookies() luôn là null. Nghĩa là frontend của em chưa nhận được cookie đúng không ạ? Em có tham khảo các bài viết cũng như AI nhưng vẫn chưa tìm được câu trả lời.<p>
Mọi người giúp em case này với a? Em cảm ơn ạ!
</p>
Tìm Khoá Học
Mình đang tìm khoá học android <p>
Mình đã có kiến thức nền Hướng đối tượng và DSA
</p>
<p>
Mình search thấy khoá học android java + kotlin của 1 anh tên Thân Triệu ở web Branium Academy
</p>
<p>
Có ai học qua hay biết anh này là ai không ạ ? Hoặc bạn/anh chị có biết khoá học của bên nào giới thiệu cho mình với
</p>