diff --git a/package/gluon-web/luasrc/usr/lib/lua/gluon/web/model.lua b/package/gluon-web/luasrc/usr/lib/lua/gluon/web/model.lua
index 27aee325057b193d54b5505d180a7eb155f7e235..ee841024b4674f1e6a054ba37d0be1f759cd0126 100644
--- a/package/gluon-web/luasrc/usr/lib/lua/gluon/web/model.lua
+++ b/package/gluon-web/luasrc/usr/lib/lua/gluon/web/model.lua
@@ -401,14 +401,16 @@ function ListValue:__init__(...)
 end
 
 function ListValue:value(key, val, ...)
+	key = tostring(key)
+
 	if self.keys[key] then
 		return
 	end
+	self.keys[key] = true
 
 	val = val or key
-	self.keys[key] = true
 	table.insert(self.entry_list, {
-		key = tostring(key),
+		key = key,
 		value = tostring(val),
 		deps = {...},
 	})