页面使用的是struts标签:
<%@ taglib prefix="s" uri="/struts-tags"%>
先在action类创建一个session,
<span style="white-space:pre"> </span>//验证成功,保存数据到session,跳转到主页
if (loginUser!=null) {
Map<String, Object> session = ActionContext.getContext().getSession();
session.put("loginUser", loginUser);
return "loginSuccess";
}else {
ActionContext.getContext().put("message", "用户名或密码输入有误!");
return "loginUI";
}
${sessionScope.loginUser.name }
判断发布与停用二者之间的变换
<td align="center"><s:property value="state==1?'发布':'停用'"/></td>
<td align="center"><span >
<s:if test="state==1">
<s:a href="info_updateState.action?info.id=%{id}&info.state=0" namespace="/ss">
<font color="red">停用</font>
</s:a>
</s:if>
<s:else>
<s:a href="info_updateState.action?info.id=%{id}&info.state=1" namespace="/ss">
发布
</s:a>
</s:else></span>
js事件,使用s标签
<a href="javascript:doEdit('<s:property value='id'/>')">编辑</a>
<script type="text/javascript">
//<%@include file="/common/header.jsp"%>这个标签是引用公共页面,basePath就在公共页面里面
function doEdit(id) {
window.location.href="${basePath}/ss/info_editUI.action?info.id="+id;
}
</script>
分页jsp
<td align="right">
总共${pb.totalSize }条记录,当前第 ${pb.currentPage }/${pb.totalPage } 页,共 ${pb.totalPage } 页
<a href="javascript:gotoPage(1)">首页</a>
<a href="javascript:gotoPage(${pb.prePage })">上一页</a>
<a href="javascript:gotoPage(${pb.nextPage })">下一页</a>
<a href="javascript:gotoPage(${pb.totalPage })">末页</a>
转到
<input type="text" style="width: 30px;" name="mm" οnchange="gotoPage(this.value)">页
每页显示
<select name="pageSize" οnchange="gotoPage(1)">//下拉选项框,迭代1-10,每页显示多少行,任意选
<s:iterator var="num" begin="1" end="10" step="1">
<s:if test="#num==#pb.pageSize">//判断如果选中的行数与默认的行数一致就默认选中
<option value="${num }" selected="selected">${num }</option>
</s:if>
<s:else>//否则选中多少就是页显示多少行
<span style="white-space:pre"> </span><option value="${num }">${num }</option>
</s:else>
</s:iterator>
</select>行
</td>
<script type="text/javascript">
function gotoPage(currentPage) {
document.getElementById("currentPage").value=currentPage;
document.forms[0].action="${basePath}/ss/info_listUI.action";
document.forms[0].submit();
}
</script>
jsp迭代类里面的set集合属性里面的值:Role=>>private Set<RolePrivilege> rolePrivileges = new HashSet<>();
步骤:1、先在action类里面将 RolePrivilege存储到域。
//角色列表展示
public String listUI() {
list = roleService.findAll();
ActionContext.getContext().put("PRIVILEGES", Constant.PRIVILEGES);
return "listUI";
}
写一个Constant.PRIVILEGES常量类(静态),是为了在数据库存储的是代号,但是在页面显示的是名称,用Map即可,非常好用
public class Constant {
// OA系统,内部评测系统,行政管理,社保服务管理,KPI考核
public static final String PRIVILEGE_OA = "oa";
public static final String PRIVILEGE_EXAM = "exam";
public static final String PRIVILEGE_XZGL = "xzgl";
public static final String PRIVILEGE_SBFW = "sbfw";
public static final String PRIVILEGE_KPI = "kpi";
public static final String LOGIN_USER="loginUser";
//存储权限编码与权限名称
public static Map<String,String> PRIVILEGES = new HashMap<String,String>();
static{
PRIVILEGES.put("oa", "OA系统");
PRIVILEGES.put("exam", "内部评测系统");
PRIVILEGES.put("xzgl", "行政管理");
PRIVILEGES.put("sbfw", "社保服务管理");
PRIVILEGES.put("kpi", "KPI考核");
}
}
2、在页面迭代取值,用到两个迭代器,第一个迭代器是先得到set集合里面的对象,然后第二个迭代器迭代
set集合对象里面的属性privilegeCode字段。因为用了map集合,在页面显示的是名称,不再是代号,做了很巧妙的转换
<s:iterator value="#role.rolePrivileges">
<s:property value="#PRIVILEGES[privilegeCode]"/>
</s:iterator>
页面修改链接:方法1、可以使用function功能,如下
<a href="javascript:doEdit('<s:property value='#role.id'/>')">编辑</a>
function doEdit(id) {
window.location.href="role_editUI.action?role.id="+id;
}
方法2、也可以直接在a标签上提交, 如下
<a href="role_editUI.action?role.id=${role.id }/>')">编辑</a>
页面单选按钮:
<td class="tdBg" width="200px">状态:</td>
<td><s:radio list="#{'1':'有效','0':'无效'}" name="role.state"/></td>