如何在JSF页面中使用ActiveX控件
KingCobra
2008-08-28
公司的一个遗留项目 要求在jsf 页面取得客户的网卡MAC地址,我用JS调用ActiveX控件的方法在HTML页可以实现,可是到JSF的页面总是出错误
JS代码如下: <script language="JScript" event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for="foo"> var macInput = document.getElementById("customer_mac"); macInput.value=unescape(MACAddr); </script> <script language="JScript" event="OnObjectReady(objObject,objAsyncContext)" for="foo"> var tempIp = objObject.IPEnabled; if(tempIp == true) { if(objObject.MACAddress != null ){ MACAddr = objObject.MACAddress; } } </script> <object id="locator" classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT" ></object> <object id="foo" classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223"></object> <script language="JScript"> var service = locator.ConnectServer(); var MACAddr ; var IPAddr ; var DomainAddr; var sDNSName; service.Security_.ImpersonationLevel=3; service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration'); </script> |
|
rockjava
2008-08-28
你要用js这么做的话,那在非IE浏览器的情况下不就失灵了吗?还是用java来读取MAC地址然后显示在JSF页面上
|
|
vieri122
2008-08-29
我也有此问题 比方说要在JSF页面用一个activeX的网页视频控件
不知道该如何实现? |
|
KingCobra
2008-08-29
用JAVA读取MAC需要对方的IP或者机器名,用IPconfig 和ARP实现,还有其他办法吗?
这是一个宽带管理系统 用户的 IP是DHCP动态分配的。 |
|
kimmking
2008-08-31
报什么错
我们的jsf项目大量使用了activex --- 看看你的 var macInput = document.getElementById("customer_mac"); 中的这个customer_mac是不是在jsf页面名字变了 加个forceid |
|
maxwell
2008-09-04
使用activex 和jsf是没有关系的,只要jsp能调用 jsf就可以调用。 顺便关于forceid 问题 :
var macInput = document.getElementById("formId:customer_mac"); 在定义的ID前面加上formId就可以了, |
|
KingCobra
2008-09-04
没有错误! 感觉ActiveX控件没起作用!页面代码这样的:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0" xmlns:f="http://java.sun.com/jsf/core" xmlns:tr="http://myfaces.apache.org/trinidad" xmlns:trh="http://myfaces.apache.org/trinidad/html" xmlns:cv="http://sourceforge.net/projects/jsf-comp/clientvalidators" xmlns:c="http://java.sun.com/jsp/jstl/core"> <jsp:directive.page contentType="text/html;charset=utf-8" /> <f:view> <tr:document title="装机管理" mode="quirks"> <tr:form id="roleForm"> <tr:panelPage> <tr:messages globalOnly="true" id="stateMessage"></tr:messages> <tr:panelHeader text="装机完成"> <trh:tableLayout borderWidth="0"> <trh:rowLayout> <tr:outputLabel for="customer_mac" value="客户MAC" /> <tr:inputText value="#{receiptBroadBand.customer.customer_mac}" id="customer_mac"> </tr:inputText> </trh:rowLayout> </trh:tableLayout> </tr:panelHeader> </tr:panelPage> </tr:form> <script language="JScript" event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for="foo"> var userMac = document.getElementById("customer_mac"); userMac.value=unescape(MACAddr); //document.formbar.submit(); </script> <script language="JScript" event="OnObjectReady(objObject,objAsyncContext)" for="foo"> if(objObject.IPEnabled == true) { if(objObject.MACAddress != null) MACAddr = objObject.MACAddress; } </script> <object id="locator" classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT"></object> <object id="foo" classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223"></object> <script language="JScript"> var service = locator.ConnectServer(); var MACAddr ; service.Security_.ImpersonationLevel=3; service.InstancesOfAsync("foo", "Win32_NetworkAdapterConfiguration"); </script> </tr:document> </f:view> </jsp:root> 如果把这段JS放在上面 整个页面都不渲染 我自己看了渲染出来的页面 那个Input的ID没有变化。 |