在JSP文件中使用JSONObject访问HashMap操作变量

时间:2012-01-02 05:53:48

标签: json jsp struts2 struts hashmap

我正在使用 Struts2 使用java操作类并查看 JSP 文件。

我的Action类有一个名为:

的变量
HashMap<Integer, Boolean>  pcksHavingFet;
List<pck> pcks;
int fet;

在pcks中,我有一个带有主键pckId的pck列表。 我在动作类中有一个代码函数,它根据pck是否与数据库中的fet相关联来评估pcks并分配true / false。因此,我们得到了pcksHavingFet Map的完全评估表达式。

//Code that evaluates and set pcksHavingFet varaible. 
//Create A JSON Object to access this Map variable in JSP.
public void function()
{
// code to populate pcksHavingFet with key/value pair.
//e.g, pcksHavingFet  = {1:true, 2:fALSE, 6:TRUE, 17:false, 11:true .....}

//Create JSON Object to access Map in JSP file
JSONObject jasonfeat = new JSONObject();
jasonfeat.accumulateAll(pcksHavingFet  );
}

在Jsp文件中,

我需要访问此pcksHavingFet Map变量。

我使用下面的函数来显示/隐藏基于pckId的fetDropdown下拉列表是从Map pcksHavingFet计算的真/假。

function pcksOnChange(pckId)
{ 
var pcksHavingFet = <ww:property value="pcksHavingFet "/> ;
<ww:set name="pcksHavingFet" value="%{JSONObject.fromObject(pcksHavingFet)}">
</ww:set>
fetDropdown.style.display = (pcksHavingFet [pckId]) ? "" : "none";
}

但我可以在动作类中看到pcksHavingFet变量的填充值。但是在JSP文件中,虽然无法访问它。它即将成为空地图。

请帮我成功访问此变量。这将是一个帮助。我是JSON的新手,请详细说明你的建议/帮助。

提前致谢。

1 个答案:

答案 0 :(得分:0)

为什么你没有使用Struts2 Build in机制来处理JSON.Struts2提供[Json-plugin]。1

自2.1.7 +

以来,JSON插件与Struts捆绑在一起

您需要做的就是在类路径中添加插件jar jar,并且需要扩展json-default来代替struts-default,你就可以了。

建议您阅读插件页面以获取详细信息以及如何在Struts2中使用JSON的示例

  1. Strus2-Json
  2. 正如旁注ww表示现在已合并到Struts2的网络工作一样,因此使用s代替ww更加清晰明了,但最终的选择都是你的。

    当您询问有关Struts2的问题时,更好地用struts2标记它们而不是struts:)