我在".tag"文件中有一个自定义标记,用于计算和输出值.因为我不能在这里发布代码,让我们假设一个简单的例子.
文件内容mytag.tag:
<@tag dynamic-attributes="dynamicParameters">
<%@attribute name="key" required="true"%> <%-- this works fine, in spite of dynamic-attributes --%>
<jsp:doBody var="bodyContent/">
<%-- ... here is some code to compute the value of variable "output" --%>
${output}
Run Code Online (Sandbox Code Playgroud)
调用者可以像这样轻松调用它:
<prefix:mytag key="foo">Body content...</prefix:mytag>
Run Code Online (Sandbox Code Playgroud)
这将插入标签的输出.但我也会让调用者做这样的事情:
<prefix:mytag key="foo" var="mytagOutput">Body content...</prefix:mytag>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,输出实际上不会被写入,而是分配给变量"mytagOutput",然后调用者可以使用该变量.
我知道调用者可以通过将自定义标记包装在a中来实现这一点c:set,但这并不像简单地声明"var"那样优雅.我也知道用这个@variable指令name-from-attribute可以用来实现这个目的.但是,我不知道调用者是否给出了属性"var".(如果给定,我想分配${output}给该变量,否则我想写出来${output}.)
有没有办法让我知道是否已传入"var"属性?
另一种选择是创建第二个自定义标记,可能称为"getMytag",它始终需要"var"属性并将"mytag"包装在一个中c:set.如果我在这里找不到解决办法,我会为此而努力.
(如果之前已经问过这个问题,请指出.我做了一个快速搜索,但没有找到类似的问题.)
我对一些Java代码有一个澄清:
这些代码之间的区别是什么,一个可以编译而另一个不能编译.
我对"如何修复错误"不感兴趣,因为我已经解决了它,但更多的是关于这个问题的解释:
public void x(){
HashMap<String , Integer> count= new HashMap<String, Integer>();
Scanner scan= new Scanner("hdsh");
String tmp;
while((tmp=scan.next())!=null){
if(count.containsKey(tmp)){
count.put(tmp, 1);
}
else{
count.put(tmp, count.get(tmp)+1);
}
tmp=scan.next();
}
}
Run Code Online (Sandbox Code Playgroud)
public void x(){
HashMap<String , Integer> count= new HashMap<String, Integer>();
Scanner scan= new Scanner("hdsh");
while((String tmp=scan.next())!=null){
if(count.containsKey(tmp)){
count.put(tmp, 1);
}
else{
count.put(tmp, count.get(tmp)+1);
}
tmp=scan.next();
}
}
Run Code Online (Sandbox Code Playgroud)
此行有多个标记:
根据定义:
noNamespaceSchemaLocation属性引用没有目标命名空间的XML Schema文档.
这个属性将如何改变解析的结果?
例如,采用这个XML:
<?xml version="1.0"?>
<name
xmlns="http://www.example.com/name"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.com/name schema/schema.xsd"
title="Mr.">
<first>John</first>
<middle>M</middle>
<last>Doe</last>
</name>
Run Code Online (Sandbox Code Playgroud)
参考这个架构:
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:target="http://www.example.com/name"
targetNamespace="http://www.example.com/name" elementFormDefault="qualified">
<element name="name">
<complexType>
<sequence>
<element name="first" type="string"/>
<element name="middle" type="string"/>
<element name="last" type="string"/>
</sequence>
<attribute name="title" type="string"/>
</complexType>
</element>
</schema>
Run Code Online (Sandbox Code Playgroud)
我从架构中删除了这些命名空间声明:
xmlns:target="http://www.example.com/name"
targetNamespace="http://www.example.com/name"
Run Code Online (Sandbox Code Playgroud)
甚至没有在引用XML中使用noNamespaceSchemaLocation属性,也没有抛出任何错误.为什么我们甚至首先需要这个属性?
我正在使用jquery-mousewheel插件来触发一个函数.
当我调用moveit时,我会分离监听器并等待动画完成,然后重新连接监听器.
问题是当我重新连接它时,鼠标滚轮插件仍在听一些鼠标/触控板的惯性,并反复调用moveit.
我想在我的具体情况下,对函数调用进行去抖动或限制不是好的解决方案,因为惯性仍然存在,并且我还希望立即附加侦听器以用于其他可能的moveit调用.
有没有办法通过完全重置鼠标滚轮事件来"消除惯性",而不是仅仅拆卸它?
$(document).ready(function () {
var tween;
var slide = $('#slide');
function bodyListen () {
$('body').on('mousewheel.bodyscroll',
function (e, delta, deltaX, deltaY) {
e.preventDefault();
$('body').off('mousewheel.bodyscroll');
moveit();
});
}
function moveit () {
tween = TweenMax.to(slide, 0.8, {
marginLeft: 300,
onComplete: bodyListen
});
}
bodyListen();
});
Run Code Online (Sandbox Code Playgroud) 我多次怀疑这个问题,但没有找到正确的解决方案.这次我要清除它.我有情况喜欢
1.
String sNumber="ksadfl.jksadlf";
if(sNumber.lastIndexOf('.')>0)
//do something
...
...
if(sNumber.lastIndexOf('.')>1)
//do something
...
2.
int index = sNumber.lastIndexOf('.');
if(index>0)
//do something
...
...
if(index>1)
//do something
...
Run Code Online (Sandbox Code Playgroud)
第一种方式和第二种方式之间的权衡是什么?哪一个更好地将结果存储在变量中或者调用函数两次?
在研究servlet中的安全性约束和过滤器时,我在web.xml文件中做了以下声明,这些声明无法正常工作:
<security-constraint>
<web-resource-collection>
<web-resource-name>BeerSelector</web-resource-name>
<url-pattern>/SelectBeer.do</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>Admin</role-name>
</auth-constraint>
</security-constraint>
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>model.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/SelectBeer.do</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
根据我读到的内容:在请求到达某个url 之前应该遇到过滤器,那么,为什么首先调用security-constraint呢?
我知道从安全方面来说这是有意义的(要达到你认证的过滤器),但我想知道请求触发的序列.
容器是否首先搜索安全资源,从而触发安全约束?
但这与Head First Servlets和Jsp引用的以下段落相矛盾"
请记住,在DD中,是关于请求后发生的事情.换句话说,当Container开始查看元素以决定如何响应时,客户端已经发出请求.请求数据已通过网络发送
或者请求只是触发两者:filter和security-constraint,但是安全约束比过滤器更受青睐?
java ×4
javascript ×1
jquery ×1
jsp ×1
jsp-tags ×1
mouseevent ×1
mousewheel ×1
performance ×1
pojo ×1
servlets ×1
syntax ×1
variables ×1
xml ×1