javax.servlet.ServletException: No collection found ???????

本文探讨了在使用JavaBean时遇到的Collection显示问题,详细解释了如何在Action中设置属性并在JSP页面中正确迭代这些集合数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 是 因为在javabean没有建立 collection对象或者建立的对象不正确。
       在action中 应该有 request.setAttribute("gid", gd.getColl());
       在jsp中例如: <logic:present name="gid">
                 <logic:iterate id="list" name="gid">
     <tr>
                 <td>
   <bean:write name="list" property="gq_name" />
       </td>

      </tr>
     </logic:iterate>

package com.example.st_mes.config; import com.alibaba.fastjson.JSONObject; import com.example.st_mes.model.*; import com.example.st_mes.model.dto.MySecurityUser; import com.example.st_mes.model.vo.RoleMenuButtonVo; import com.example.st_mes.service.ButtonService; import com.example.st_mes.service.UserRoleService; import com.example.st_mes.utils.JwtUtils; import com.example.st_mes.utils.ResponseTemplate; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.security.core.Authentication; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import org.springframework.stereotype.Component; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @Component public class MyAuthenticationSuccessHandler implements AuthenticationSuccessHandler { @Autowired private ObjectMapper objectMapper; @Autowired private JwtUtils jwtUtils; @Autowired private StringRedisTemplate stringRedisTemplate; @Autowired private ButtonService buttonService; @Autowired private UserRoleService userRoleService; @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { //从认证信息里获取登录用户的信息 MySecurityUser mySecurityUser = (MySecurityUser) authentication.getPrincipal(); User userInfo = mySecurityUser.getUserData(); String strUserInfo = objectMapper.writeValueAsString(userInfo);//将用户信息转换为字符串 userRoleService.getUserRole(userInfo.getUserid()); //获取用户权限信息 List<SimpleGrantedAuthority> authorities = (List<SimpleGrantedAuthority>) mySecurityUser.getAuthorities(); List<String> authList = authorities.stream().map(SimpleGrantedAuthority::getAuthority).collect(Collectors.toList()); List<RoleButton> roleButtonList = mySecurityUser.getRoleButtonList(); Integer btnSize = roleButtonList.size(); Integer[] btn = new Integer[btnSize]; String[] permissions = new String[btnSize]; int i = 0; for (RoleButton roleButton:roleButtonList){ btn[i] = roleButton.getButtonId(); Button button = buttonService.getButtonById(btn[i]); permissions[i] = button.getCode(); i++; } //生成jwt String jwtToken = jwtUtils.createJwt(strUserInfo, authList); JSONObject jsonObject = new JSONObject(); jsonObject.put("jwtToken",jwtToken); jsonObject.put("permissions",permissions); ResponseTemplate responseTemplate = ResponseTemplate.builder() .code(200) .msg("jwt生成成功") .data(jsonObject) .build(); //将jwt存放到Redis中 stringRedisTemplate.opsForValue().set("loginToken:" + jwtToken, objectMapper.writeValueAsString(authentication),30, TimeUnit.MINUTES); printToken(request,response,responseTemplate); } private void printToken(HttpServletRequest request, HttpServletResponse response, ResponseTemplate responseTemplate)throws IOException{ String strResponse = objectMapper.writeValueAsString(responseTemplate); response.setCharacterEncoding("UTF-8"); response.setContentType("application/json;charset=utf-8"); PrintWriter writer = response.getWriter(); writer.println(strResponse); writer.flush(); } } 这段代码的问题
最新发布
06-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值