0
저는 vaadin 응용 프로그램이 있으며 SQLContainer를 사용하여 데이터베이스 레코드를 표시했습니다. 데이터베이스 변경이 발생할 때 SQLcontainer 자체를 업데이트하려고한다는 문제가 있습니다. 캠 아무도 도와주세요?Vaadin에서 SQLContainer 자동 새로 고침을 만드는 방법
저는 vaadin 응용 프로그램이 있으며 SQLContainer를 사용하여 데이터베이스 레코드를 표시했습니다. 데이터베이스 변경이 발생할 때 SQLcontainer 자체를 업데이트하려고한다는 문제가 있습니다. 캠 아무도 도와주세요?Vaadin에서 SQLContainer 자동 새로 고침을 만드는 방법
AFAIK 귀하는 MySQL, Oracle 또는 MSSQL과 같은 데이터베이스 시스템의 변경 사항에 "청취자"를 등록 할 수 없습니다. 데이터베이스가 의도 된 방식으로 작동하도록 설계되지 않았습니다.
해결 방법은 JavaScript 호출을 Vaadin에 등록하고 x 초마다 테이블을 업데이트하는 것입니다. 이렇게하면 PushMode를 활성화 할 필요조차 없습니다. 다른 클라이언트가 아닌 서버에 요청을 보내는 클라이언트가됩니다. downvote 왜
final VerticalLayout layout = new VerticalLayout();
setContent(layout);
final Table table = new Table("Table");
try
{
JDBCConnectionPool connectionPool = new SimpleJDBCConnectionPool("com.mysql.jdbc.Driver", "jdbc:mysql://localhost:3306/test", "root", "");
QueryDelegate qd = new FreeformQuery("select * from testTable", connectionPool, "id");
final SQLContainer c = new SQLContainer(qd);
table.setContainerDataSource(c);
}
catch (SQLException e)
{
e.printStackTrace();
}
layout.addComponent(table);
JavaScript.getCurrent().execute("setInterval(function(){refreshTable();},5000);");
JavaScript.getCurrent().addFunction("refreshTable", new JavaScriptFunction()
{
@Override
public void call(JSONArray arguments) throws JSONException
{
table.refreshRowCache();
}
});
예를 다음
은 MySQL과 Vaadin이 7.3에서 테스트되었다? 확실히 OP는 자신의 데이터베이스 테이블에서 행이 수정 될 때마다 그의 테이블을 업데이트하려고합니다. 나는 이것에 대한 간단한 해결책을 찾지 못했다. – kukis
[이 페이지] (https://vaadin.com/book/-page/sqlcontainer.caching.html#)에 따르면 새로 고침 기능이 내장되어 있습니다. 'SQLContainer가 연결된 행의 양을 계속 확인합니다 데이터베이스 테이블을 사용하여 외부 추가 또는 행 제거를 감지합니다. 기본적으로 테이블 행 수는 10 초 동안 유효하다고 가정됩니다. 이 값은 코드에서 변경할 수 있습니다. SQLContainer에서 setSizeValidMilliSeconds()와 함께 .' 나는 이것을 확인하지 못했습니다. 또한 UPDATE가 감지되는지도 알지 못합니다. ** 중요 ** 사용자 상호 작용없이 클라이언트 측에 새로 고침을 표시하려면 푸시를 사용해야합니다. –