小编iai*_*gin的帖子

使用JSP Documents(JSPX)有条件地在元素上设置属性

在HTML表单中,可以通过在其上定义"disabled"属性来禁用按钮,具有任何值:

<button name="btn1" disabled="disabled">Hello</button>
Run Code Online (Sandbox Code Playgroud)

如果要启用某个按钮,则该属性不应该存在,因为没有定义的值可以将disabled属性设置为启用按钮.

当我想在使用JSP文档(jspx)时启用/禁用按钮时,这会导致我出现问题.由于JSP文档必须是格式良好的XML文档,我无法看到有条件地包含此属性的任何方式,因为以下内容不合法:

<button name="btn1" <%= (isDisabled) ? "disabled" : "" %/> >Hello</button>
Run Code Online (Sandbox Code Playgroud)

虽然我可以使用JSTL if标签复制标签两次以获得所需的效果,但在我的特定情况下,我在按钮上声明了超过15个属性(AJAX的许多javascript事件处理程序属性),因此重复标记将使JSP非常凌乱.

如何在不牺牲JSP可读性的情况下解决这个问题?是否有任何自定义标记可以通过操作输出DOM将属性添加到父级?

xhtml jsp jspx webforms

18
推荐指数
3
解决办法
3万
查看次数

如何使用 Fragment 来启动 Smartlock 保存而不是使用 Activity

我刚刚意识到,当我为 Android 应用程序进行重构时,smartlock api 不允许我将 Fragment 传递给 ResolvingResultCallbacks 对象。

API 只允许我将 Activity 作为上下文传递,这意味着我需要在 Activity 的 onActivityResult() 方法而不是 Fragment 方法中处理凭据结果。但是在我们应用程序的当前设计中,我们希望 Fragment 处理智能锁逻辑。

这是我的保存代码:

 Auth.CredentialsApi.save(mSmartLockApiClient, credential).setResultCallback(
     new ResolvingResultCallbacks<Status>(mActivity, RC_CREDENTIALS_SAVE) {
       @Override
       public void onSuccess(Status status) {                               
         mSmartLockSaveCallBack.onSuccess();
       }

       @Override
       public void onUnresolvableFailure(Status status) {}
     });
Run Code Online (Sandbox Code Playgroud)

实际上,对于请求凭据,我遇到了同样的问题,api 没有提供传递片段以开始解析的方法。但我找到了一个解决方法:

 if (status.hasResolution()) {
   mFragment.startIntentSenderForResult(
       status.getResolution().getIntentSender(), 
       RC_CREDENTIALS_READ, 
       null, 
       0, 
       0, 
       0, 
       null);
}
Run Code Online (Sandbox Code Playgroud)

android android-fragments google-smartlockpasswords

4
推荐指数
1
解决办法
369
查看次数

IPv6 区域解析

首先,我对 IPv6 的细节还不熟悉,所以如果这只是对 IPv6 路由的误解,我不会感到惊讶。考虑一下我正在运行 P2P 覆盖网络的情况,其中一部分位于单个 LAN 的边界内。该 LAN 内的节点具有以下链路本地地址(如其自身所见):

  • 对等 1 fe80::225:4bff:fea8:e200%en0
  • 对等 2 fe80::225:4bff:fea8:e201%eth1
  • 对等 3 fe80::225:4bff:fea8:e202%en1

现在,假设每个对等点都能够通过某种方式发现其他对等点,并拥有彼此的地址。每个对等点都在侦听一个端口,例如 12345。如果对等点 1 想与对等点 2 通信,他们可能会尝试使用 URI:

tcp://[fe80:225:4bff:fea8:e201%eth1]:12345

这就是我遇到问题的地方。对等点 1 没有名为“eth1”的适配器,因此它不知道该 IPv6 区域标识符。如果从地址中删除区域 ID,则对等体 1 无法确定必须使用哪个适配器来联系主机。

那么问题来了:是否有可能以标准方式解析 IPv6 地址的区域标识符?如果没有,我是否必须向系统查询所有区域标识符,并尝试依次使用每个区域标识符连接到该地址,直到成功为止?或者尝试使用链接本地地址进行通信从一开始就是一个愚蠢的想法?

networking ipv6

0
推荐指数
1
解决办法
700
查看次数