【问题标题】:How to Retrive Different Bean class Objects from HashMap which was created in Spring Controller and added to Model Object如何从在 Spring Controller 中创建并添加到模型对象的 HashMap 中检索不同的 Bean 类对象
【发布时间】:2026-02-04 17:50:01
【问题描述】:

我是 spring 新手,我需要帮助。

我的工作解决问题 步骤

1:创建了一个控制器,我在控制器中创建了5个Bean类对象

2:创建的HashMap。

3:将bean类对象添加到HashMap中。

4:将HashMap添加到模型对象中。

5:在 Jsp 中我想检索 bean 类对象并在 jsp 中打印 bean 类属性值(成功视图)。

      public class SocialMediaContoller{//step1

//step2
    TwitterBean tb=new sampleA();

    GoogleBean gb=new GoogleBean();

    YouTubeBean yb=new YouTubeBean();

    InstagramBean ib=new InstagramBean();

    FaceBookBean fb=new FaceBookBean();


//step3  
        Map<String,Object> socialmedia=new HashMap<String,Object>();
        socialmedia.put("twittermetrics",tb);
        socialmedia.put("googleplusmetrics",gb);
        socialmedia.put("instagrammetrics",ib);
        socialmedia.put("youtubemetrics",yb);
        socialmedia.put("facebookmetrics",fb);

    //spe4
    return "view/socialmedia/SocialMediaSuccess"; 
    }

InSuccessJSP 第6步: 我想显示 bean 类属性的值 我的代码是:

 <div id="twitter">
    <div id="twitterMetrics">
    <p><b>Twitter Profile Analysis</b></p>
     <table id="twitterTable">
    <tr>
    <td><b>Followers</b></td>
    <td><c:out value="${tb.followers}" /></td>
    </tr>
    </tr>
    </table>
<table id="googleTable">
    <tr>
    <td><b>Followers</b></td>
    <td><c:out value="${gb.followers}" /></td>
    </tr>
    </tr>
    </table>
<table id="youtubeTable">
    <tr>
    <td><b>Followers</b></td>
    <td><c:out value="${yb.views}" /></td>
    </tr>
    </tr>
    </table>
<table id="instagarmTable">
    <tr>
    <td><b>Followers</b></td>
    <td><c:out value="${ib.followers}" /></td>
    </tr>
    </tr>
    </table>
    </div>

    </div>

其余对象相同

在 JSP 中

最后我需要帮助/代码在 (Step6)从 MapObject(即社交媒体)从 JSP 成功页面中的模型对象检索元素

【问题讨论】:

    标签: java spring jsp hashmap jstl


    【解决方案1】:

    Model 对象本身代表一个 Map,因此创建另一个 Map 注入 Model 是多余的。相反,只需将您的 bean 直接添加到 Model 例如model.addAttribute("twittermetrics",tb)。在 JSP 中可以直接引用 Model 键。

    【讨论】:

    • 感谢 Zoostar 的回复,我在不同的条件/案例(Post & Get 方法也是)中添加了参考对象,在所有情况下,如果我将它们添加到模型对象,因为 CODE 的大小增加了
    【解决方案2】:

    当前您的控制器正在返回字符串。要从 MapObject(即社交媒体)中检索元素,您需要返回 ModelAndView。请在下面找到代码 sn-p。

    控制器

        @RequestMapping(value="/getSocialMediaData")
            public ModelAndView getSocialMediaData() throws SystemException, BusinessException{
        private ModelMap map = new ModelMap();  
                    TwitterBean tb=new sampleA();
                    GoogleBean gb=new GoogleBean();
                    YouTubeBean yb=new YouTubeBean();
                    InstagramBean ib=new InstagramBean();
                    FaceBookBean fb=new FaceBookBean();
                    map.addAttribute("twittermetrics",tb);
                    map.addAttribute("googleplusmetrics",gb);
                    map.addAttribute("instagrammetrics",ib);
                    map.addAttribute("youtubemetrics",yb);
                    map.addAttribute("facebookmetrics",fb);
          return new ModelAndView("view/socialmedia/SocialMediaSuccess",map);
    }
    

    成功的 JSP

    <div id="twitter">
       <div id="twitterMetrics">
        <p><b>Twitter Profile Analysis</b></p>
         <table id="twitterTable">
        <tr>
        <td><b>Followers</b></td>
        <td><c:out value="${twittermetrics.followers}" /></td>
        </tr>
        </tr>
    </table>
    <table id="googleTable">
        <tr>
        <td><b>Followers</b></td>
        <td><c:out value="${googleplusmetrics.followers}" /></td>
        </tr>
        </tr>
     </table>
    <table id="youtubeTable">
        <tr>
        <td><b>Followers</b></td>
        <td><c:out value="${youtubemetrics.views}" /></td>
        </tr>
        </tr>
     </table>
    <table id="instagarmTable">
        <tr>
        <td><b>Followers</b></td>
        <td><c:out value="${instagrammetrics.followers}" /></td>
        </tr>
        </tr>
     </table>
    </div>
    

    【讨论】:

    • 谢谢 Sunil 的代码,它是正确的,但我之前得到它只是
    • 很好,但我们可以认为答案对您的问题正确吗?
    最近更新 更多