📄 interceptors.jsp
字号:
if (descriptors[i].getName().equals(newPropName)) { propDescriptor = descriptors[i]; break; } } if (propDescriptor != null) { // Get both the read and write methods: Method readMethod = propDescriptor.getReadMethod(); Method writeMethod = propDescriptor.getWriteMethod(); // Get the String[] via the read method: String[] entries = (String[])readMethod.invoke(interceptor, null); // Make a new entry array of entries.length+1 because we're // adding one more entry to the property String[] newEntries = new String[entries.length+1]; for (int i=0; i<entries.length; i++) { newEntries[i] = entries[i]; } // The new prop value goes in the last spot of newEntries: newEntries[newEntries.length-1] = newPropValue; // Use the write method to save the new entries: writeMethod.invoke(interceptor, new Object[]{newEntries}); // Save interceptors interceptorManager.saveInterceptors(); // Done, so redirect StringBuffer url = new StringBuffer(); url.append("interceptors.jsp?forum=").append(forumID); url.append("&edit=true&pos=").append(interceptorIndex); response.sendRedirect(url.toString()); return; } } } } // Remove one of the String[] prop entries: if (deletePropEntry) { if (deletePropertyName != null) { // The interceptor we're working with: MessageInterceptor interceptor = interceptorManager.getInterceptor(interceptorIndex); PropertyDescriptor[] descriptors = (Introspector.getBeanInfo(interceptor.getClass())).getPropertyDescriptors(); PropertyDescriptor propDescriptor = null; // Look for the property specified for (int i=0; i<descriptors.length; i++) { if (descriptors[i].getName().equals(deletePropertyName)) { propDescriptor = descriptors[i]; break; } } if (propDescriptor != null) { // Get both the read and write methods: Method readMethod = propDescriptor.getReadMethod(); Method writeMethod = propDescriptor.getWriteMethod(); // Get the String[] via the read method: String[] entries = (String[])readMethod.invoke(interceptor, null); // Make a new entry array of entries.length+1 because we're // adding one more entry to the property String[] newEntries = new String[entries.length-1]; int offset = 0; for (int i=0; i<newEntries.length; i++) { // Skip the index of the item we want to delete if (i == deleteIndex) { offset++; } newEntries[i] = entries[i+offset]; } // Use the write method to save the new entries: writeMethod.invoke(interceptor, new Object[]{newEntries}); // Save interceptors interceptorManager.saveInterceptors(); // Done, so redirect StringBuffer url = new StringBuffer(); url.append("interceptors.jsp?forum=").append(forumID); url.append("&edit=true&pos=").append(interceptorIndex); response.sendRedirect(url.toString()); return; } } } // Save interceptor properties if (saveProperties) { if (interceptorIndex >= 0) { // The interceptor we're working with MessageInterceptor interceptor = interceptorManager.getInterceptor(interceptorIndex); // A map of name/value pairs. The names are the names of the bean // properties and the values come as parameters to this page Map properties = getInterceptorPropertyValues(request, interceptorManager, interceptor); // Set the properties BeanUtils.setProperties(interceptor, properties); // Save the interceptors interceptorManager.saveInterceptors(); // Done, so redirect to this page response.sendRedirect("interceptors.jsp?forum=" + forumID); return; } } // Add a new interceptor to the list of installable interceptors if (addInterceptor) { try { if (newClassname == null) { throw new ClassNotFoundException("No classname specified."); } try { // Load the specified class, make sure it's an insance of the interceptor class: Class c = ClassUtils.forName(newClassname.trim()); Object obj = c.newInstance(); if (obj instanceof MessageInterceptor) { interceptorManager.addInterceptorClass(newClassname.trim()); } } catch (Exception e) { throw new ClassNotFoundException(); } } catch (ClassNotFoundException cnfe) { setOneTimeMessage(session, "message", "\"" + newClassname + "\" is not a valid classname."); } response.sendRedirect("interceptors.jsp?forum=" + forumID); return; } // Change the position of a interceptor if (changePosition) { if (interceptorIndex >= 0) { // Get the interceptor at the specified interceptor position MessageInterceptor interceptor = interceptorManager.getInterceptor(interceptorIndex); // Re-add it based on the "direction" we're doing. First, remove it: interceptorManager.removeInterceptor(interceptorIndex); if (up) { interceptorManager.addInterceptor(interceptorIndex-1, interceptor); } if (down) { interceptorManager.addInterceptor(interceptorIndex+1, interceptor); } // done, so redirect response.sendRedirect("interceptors.jsp?forum=" + forumID); return; } } // Number of installed interceptors int interceptorCount = interceptorManager.getInterceptorCount(); // All interceptor classes MessageInterceptor[] interceptors = interceptorManager.getAvailableInterceptors(); if (install && classname != null) { try { MessageInterceptor newInterceptor = (MessageInterceptor)(ClassUtils.forName(classname)).newInstance(); interceptorManager.addInterceptor(0, newInterceptor); String redirect = "interceptors.jsp"; if (forumID > -1L) { redirect += "?forum=" + forumID; } response.sendRedirect(redirect); return; } catch (Exception e) { e.printStackTrace(); } } if (remove && position > -1) { interceptorManager.removeInterceptor(position); String redirect = "interceptors.jsp"; if (forumID > -1L) { redirect += "?forum=" + forumID; } response.sendRedirect(redirect); return; }%><%@ include file="header.jsp" %><% // Title of this page and breadcrumbs String title = ""; if (isGlobal) { title = "Global Message Interceptors"; } else { title = "Message Interceptors"; } String[][] breadcrumbs = null; if (isGlobal) { breadcrumbs = new String[][] { {"Main", "main.jsp"}, {title, "interceptors.jsp"} }; } else { breadcrumbs = new String[][] { {"Main", "main.jsp"}, {"Forums", "forums.jsp"}, {"Edit Forum", "editForum.jsp?forum="+forumID}, {title, "interceptors.jsp?forum="+forumID} }; }%><%@ include file="title.jsp" %><span><font size="-1"><% if (isGlobal) { %> Interceptors examine messages before they enter the system and can modify or reject them. Use the forms below to install and customize global interceptors.<% } else { %> Interceptors examine messages before they enter the system and can modify or reject them. Use the forms below to install and customize local interceptors.<% } %></font></span><p><script language="JavaScript" type="text/javascript">var interceptorInfo = new Array(<% for (int i=0; i<interceptors.length; i++) { try { BeanDescriptor descriptor = (Introspector.getBeanInfo(interceptors[i].getClass())).getBeanDescriptor();%> new Array( "<%= descriptor.getBeanClass().getName() %>", "<%= descriptor.getValue("version") %>", "<%= descriptor.getValue("author") %>", "<%= StringUtils.replace(descriptor.getShortDescription(), "\"", "\\\"") %>" )<% if ((interceptors.length-i) > 1) { %> ,<% } } catch (Exception e) {} }%>);function properties(theForm) { var className = theForm.interceptors.options[theForm.interceptors.selectedIndex].value; var selected = 0; for (selected=0; selected<interceptorInfo.length; selected++) { if (interceptorInfo[selected][0] == className) { var version = interceptorInfo[selected][1]; var author = interceptorInfo[selected][2]; var description = interceptorInfo[selected][3]; theForm.version.value = ((version=="null")?"":version); theForm.author.value = ((author=="null")?"":author); theForm.description.value = ((description=="null")?"":description); break; } }}</script><% // Print out a message if one exists String oneTimeMessage = getOneTimeMessage(session, "message"); if (oneTimeMessage != null) {%> <font size="-1" color="#ff0000"> <i><%= oneTimeMessage %></i> </font> <p><% }%><% // Colors
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -