0

How to save server memory? I want to remove "state" as soon as data binding populates read-only View

asked 2012-04-20 17:48:56 +0800

chisharnwu gravatar image chisharnwu
9

I like to use Zk6/MVVM to create manay read-only screens. They don't require to keep as state at server as soon as UI gets populated.
I like to have 2 options
(1) destroy vm objects as soon as UI get populated.
(2) destroy subset of "state" varaibles when UI get populated.

Any solutions? Thanks for help

Chi Wu

delete flag offensive retag edit

1 Reply

Sort by ยป oldest newest

answered 2012-04-26 10:17:54 +0800

benbai gravatar image benbai
2228 6
http://www.zkoss.org

Hi,

You may try the stubonly attribute of components, and call removeBindings after rendered,
for example,

zul file:

<zk>
	<window id="mainWin" apply="org.zkoss.bind.BindComposer"
		viewModel="@id('vm') @init('test.TestVM')"
		onCreate="@command('clear')" stubonly="true">
		<label value="@load(vm.msg)" stubonly="true" />
		<label value="@load(vm.msgTwo)" stubonly="true" />
	</window>
</zk>

VM

package test;

import org.zkoss.bind.Binder;
import org.zkoss.bind.annotation.*;
import org.zkoss.zk.ui.*;
public class TestVM {
	Boolean msgRendered = false;
	Boolean msgTwoRendered = false;
	public String getMsg () {
		msgRendered = true;
		return "msg";
	}
	public String getMsgTwo () {
		msgTwoRendered = true;
		return "msgTwo";
	}
	@Command
	public void clear (@ContextParam(ContextType.BINDER) Binder binder) {
		if (msgRendered && msgTwoRendered) {
			// clear data
			msgRendered = null;
			msgTwoRendered = null;

			Desktop d = Executions.getCurrent().getDesktop();
			for (Component c : d.getComponents()) {
				if ("mainWin".equals(c.getId())) {
					// remove binding
					binder.removeBindings(c);
				}
			}
		}
	}
}

For more information, please refer to Specify Stubonly for Client-only Components

Regards,
Ben

link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2012-04-20 17:48:56 +0800

Seen: 182 times

Last updated: Apr 26 '12

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More